* HLX-001 -(by [[K]], 2021.06.20) ** (0) -HLXは、[[a21_txt01]]やその続編で作ったHLシリーズ(はりぼて言語)をベースに、[[K]]が望む理想の言語を作るプロジェクトです。 --中・長期の目標は[[a21_hlx000]]に書いてあります。 -HLX-001はその最初のバージョンです。まあHL-23みたいなものです。 ** (1) 概要 -HLX-001は、HL-9a, HL-16a, HL-22aの3つを統合し、さらに改良を加えたものです。 -統合されているので、モードを切り替えて使います。 --[codemode 0] HL-9a相当の実行モードで、JITコンパイルせずに中間コードを実行します。x86, x64以外でも(ソースからコンパイルすれば)動くはずです。 --[codemode 1] HL-16a相当の実行モードで、x86の32bitの機械語をJITコンパイラで生成します。 ---64bit版でもこのモードを利用することができますが、64bit版は32bit用の機械語を実行できないので、 codedump 1 で機械語を表示することしかできません(将来のバージョンではアセンブラも出力できます)。 --[codemode 2] HL-22a相当の実行モードで、x64の64bitの機械語をJITコンパイラで生成します(MS-Windows系のABI)。 ---32bit版でもこのモードを利用することができますが、32bit版は64bit用の機械語を実行できないので、 codedump 1 で機械語を表示することしかできません(将来のバージョンではアセンブラも出力できます)。 --[codemode 3] HL-22a相当の実行モードで、x64の64bitの機械語をJITコンパイラで生成します(System V系のABI)。 ---以下同文。・・・しかし、codemode 3は全くデバッグしてないので、このバージョンではきちんと動かないかもしれません。 -http://k.osask.jp/files/hlx001a.zip (75.3KB) --[内容] --hlx001_32.exe : 32bit版の実行ファイル(21.5KB) --hlx001_64.exe : 64bit版の実行ファイル(29.0KB) --mandel.cなどのサンプルプログラム --hlx001src/ ---hlx001.c (935行) - ソースコードから共通中間コードに変換 ---esvm.c (945行) - 共通中間コードを最適化する ---esvm_run.c (200行) - 共通中間コードをインタプリタで実行 ---esvm_x864.c (1027) - 共通中間コードをx86/x64の機械語に変換 -(以下編集中) ----