コンパイラへの道 の0
インタプリタはいろいろと紆余曲折有ったが、とりあえずschemeはそれなりに習得したということにしてコンパイラの製作に進む。
Schemeコンパイラといえばアレを読む。
書かれているように、Schemeコンパイラとは、「便利なscheme」から「簡単なscheme」へプログラムを変換し、簡単なschemeとC言語(やLLVMバイトコード)が1対1対応するようにデザインする。
もっとも、skySchemeは完全なschemeでは無い*1ので、問題はある程度簡単になる。
- Phase1
- beginを挿入する
- caseやcondをifに変換する
- let等をlambda等に変換する - ↓
- Phase2
- Phase3
- 各種最適化(内容は未定)
- Phase4
- コードの出力
クロージャ変換の内容に関してはMinCamlの解説が理解しやすい。
逆に、プロトコル実装によく出てくるパターンの最適化は当然のように必要とされる。ジャンプテーブルの生成やそのための値範囲チェックの生成等。この研究のキモは、これらの「よく出てくるパターン」にある。