チューリングは機械を生み出し、機械はアセンブリを生み出し、アセンブリは C を生み出し、C は万物を生み出す。
(知乎ユーザー Joy Neop から)
このシリーズでは、完全なコンパイラの実装プロセスを紹介します。
目標は、C 言語の不完全なサブセットを x86 アセンブリ言語に翻訳することであり、Lex Yacc LLVM などのツールを利用します。また、ガベージコレクションとオブジェクト指向の実装も予定しています。
すべてのコードはGitHubにホストされています。各段階のソースコードはこちらで確認できます。
主な参考文献は「虎の本(『現代的なコンパイラ原理 - C 言語の実装』)」であり、この本に基づいて、実装を 11 つの段階に分けています:字句解析、構文解析、意味アクション、意味解析、スタックフレームのレイアウト、翻訳、正規化、命令選択、制御フローアナリシス、データフローアナリシス、レジスタ割り当て、コード生成。
完了したもの:
「完全なコンパイラの実装 - 字句解析 | Anotherhome」
「完全なコンパイラの実装 - 構文解析 | Anotherhome」
続く...