x64 UEFI 対応 OS 自作入門 ~実機で動作する OS を作ってみよう~
  • まえがき
  • 第1章:準備
  • 第2章:32 ビット整数式の x64 JIT コンパイラを試作する
    • 2.1 コンパイラを自作する理由
    • 2.2 全体の処理の流れ
    • 2.3 コーディングの方針
    • 2.4 字句解析
    • 2.5 構文解析
    • 2.6 意味解析
    • 2.7 中間コード(WebAssembly)生成
    • 2.8 x64 コード生成
    • 2.9 デバッグとテストコード
    • 2.10 改善を検討すべき点
    • 2.11 参考文献・資料
  • 第3章:クロス開発環境を作る(1)
  • 第4章:UEFI アプリを自作開発環境でビルドする
    • 4.1 UEFI
      • 4.1.1 初めての UEFI アプリ
      • 4.1.2 GPT と MBR
      • 4.1.3 UEFI セットアップ画面
      • 4.1.4 FreeType の利用
      • 4.1.5 UEFI セキュアブート
    • 4.2 まとめ
    • 4.3 参考文献・資料
  • 第5章:クロス開発環境を作る(2)
  • 第6章:シングルタスク OS をデバッグ可能にする
  • 第7章:対応するデバイスを増やす
  • 第8章:マルチタスク/マルチコア対応
  • 第9章:インストーラを作る
  • 第10章:開発環境を移植する
  • 第11章:TCP/IP・印刷機能を作る
  • 第12章:GitHub サポート機能を作る
  • 第13章:日本語入力機能を作る
  • 第14章:ハイパーバイザを作る
  • あとがき
  • 索引
GitBook提供
このページ内

第2章:32 ビット整数式の x64 JIT コンパイラを試作する

前へ第1章:準備次へ2.1 コンパイラを自作する理由

最終更新 6 年前

次章で C コンパイラを開発するための事前準備作業として、変数を含む整数式の計算ができる初歩的なコンパイラを C 言語で開発します。 開発済みのリポジトリは、以下で参照できます。

tenpoku1000/int_calc_compiler: WebAssembly を中間言語に採用した、32 ビット整数式の x64 JIT コンパイラ

以下のようなソースコード(1 つのファイルを入力でき、1 つだけのスコープを持ちます)をコンパイルできることを想定します。

int32_t value1 = (1 + 2) * 3;
int32_t value2 = 2 + (3 * value1);
value1 = value2 + 100;

外部のアセンブラは利用せず、リンカの開発も省略するため、メモリ上に機械語を直接生成して JIT 実行します。

この章は、以下の各節で構成されています。にある参考書や WebAssembly の仕様書、 インテルの公式マニュアルなどを参照しながら読むようにすると、理解が進むと思います。

https://github.com/tenpoku1000/int_calc_compiler
2.11 参考文献・資料
2.1 コンパイラを自作する理由
2.2 全体の処理の流れ
2.3 コーディングの方針
2.4 字句解析
2.5 構文解析
2.6 意味解析
2.7 中間コード(WebAssembly)生成
2.8 x64 コード生成
2.9 デバッグとテストコード
2.10 改善を検討すべき点
2.11 参考文献・資料