次章で C コンパイラを開発するための事前準備作業として、変数を含む整数式の計算ができる初歩的なコンパイラを C 言語で開発します。 開発済みのリポジトリは、以下で参照できます。
tenpoku1000/int_calc_compiler: WebAssembly を中間言語に採用した、32 ビット整数式の x64 JIT コンパイラ https://github.com/tenpoku1000/int_calc_compilerarrow-up-right
以下のようなソースコード(1 つのファイルを入力でき、1 つだけのスコープを持ちます)をコンパイルできることを想定します。
int32_t value1 = (1 + 2) * 3; int32_t value2 = 2 + (3 * value1); value1 = value2 + 100;
外部のアセンブラは利用せず、リンカの開発も省略するため、メモリ上に機械語を直接生成して JIT 実行します。
この章は、以下の各節で構成されています。2.11 参考文献・資料にある参考書や WebAssembly の仕様書、 インテルの公式マニュアルなどを参照しながら読むようにすると、理解が進むと思います。
2.1 コンパイラを自作する理由
2.2 全体の処理の流れ
2.3 コーディングの方針
2.4 字句解析
2.5 構文解析
2.6 意味解析
2.7 中間コード(WebAssembly)生成
2.8 x64 コード生成
2.9 デバッグとテストコード
2.10 改善を検討すべき点
2.11 参考文献・資料
最終更新 7 年前