圖靈生機器,機器生匯編,匯編生 C,C 生萬物
(來自知乎用戶 Joy Neop)
本系列將展示一個完整編譯器從無到有的實現過程。
目標是從一個 C 語言的不完全子集翻譯到 x86 匯編語言,將借助 Lex Yacc LLVM 等工具,另外暫定實現垃圾回收及面向對象。
全部代碼托管在 GitHub。各階段的源代碼在這裡查看。
主要參考 虎書 (《現代編譯原理 --C 語言實現》),根據此書,暫將實現分為 11 個階段:詞法分析 語法分析 語義動作 語義分析 堆棧框架佈局 翻譯 規範化 指令選擇 控制流分析 數據流分析 寄存器分配 代碼流出。
已完成:
《一個完整編譯器的實現 — 詞法分析 | Anotherhome》
《一個完整編譯器的實現 — 語法分析 | Anotherhome》
待續...