引言
IT界有三個神獸:芯片、操作系統和編譯器。
雖然后兩者都是純軟件的東西,但是單從技巧而言,開發編譯器要求更高一些。
經典的編譯原理的書籍包括:龍書、虎書、鯨書。名字的由來都是書封面上的動物。
龍書就是下面這本《編譯原理》:
其作者剛剛獲得2020年度的圖靈獎:
虎書是下面這本:
鯨書是下面這本:
三本神獸書的區別
龍書是三本書中最基礎的,覆蓋了編譯器設計與實現的絕大部分內容,包括:詞法分析、語法分析、語法制導分析、類型檢查、運行環境(內存管理、垃圾回收等)、中間代碼生成、代碼生成、代碼優化等。
目錄如下:
虎書的目標是實現一個C編譯器,相對于龍書,它更加聚焦數據流分析、循環優化、內存管理等內容。
目錄如下:
鯨書側重于一些高級主題,如:符號表的設計與訪問、中間代碼設計、運行時表示與代碼生成器的自動生成、多遍編譯、循環優化、全局寄存器分配與調度、主流編譯器的介紹(Oracle的SPARC指令體系的編譯器、IBM的PowerPC指令體系的XL編譯器、DEC的Alpha指令體系的GEM編譯器、IntelX86編譯器)。
目錄如下:
三本神獸書建議的閱讀順序
先龍書,再虎書,最后鯨書。有書籍資源的需求,可以后臺私信筆者。
看完三本神獸書是否就可以開發工業級編譯器?
看完上面這三本書,僅僅是有了編譯器設計與實現的基本概念,要開發工業級編譯器還差得很遠。
相當于只是玩游戲刷了下副本,主線任務尚未開始。建議下一步選擇一款開源的編譯器框架,進行源代碼的學習,并嘗試二次開發:比如擴展編譯器前端等。
歡迎訂閱《華為方舟編譯器源代碼分析:基礎篇》
2019年8月31日,華為開源了鴻蒙生態系統中的重要組成部分——方舟編譯器的源代碼。筆者基于其開源代碼,開發了《華為方舟編譯器源代碼分析:基礎篇》頭條專欄,內容覆蓋CPU、硬盤、鼠標、鍵盤等外設的工作原理、編譯器的架構設計以及各模塊的算法與代碼實現,并基于源代碼詳細拆解了華為的優秀實踐和一些不足改進點。有助于科班同學從枯燥的理論學習,平滑過渡到工業級編譯器的開發。、訂閱!