從零開始建構 C 語言最佳化編譯器
儘管許多大學仍然有開設編譯器課程,部份學系甚至將其列為必修,但隨著異質多核在內運算模型的變遷,編譯器技術隨之已有相當不同的面貌。但絕大多數的大學課程僅能勉強涵蓋到語法解析與指令生成,遑論要探討各式最佳化議題。
本議程將介紹一項從無到有開發 C 語言編譯器的嘗試:首先實作 C 語言的解析器與支援 Arm 和 RISC-V 處理器架構的編譯器後端,使其能不依賴任何組譯器或連結器達成自我編譯 (self-hosting),隨後引入 SSA (static single assignment form) 及一系列的最佳化策略,以不到萬行的 C 程式碼建構這個小而精巧的最佳化編譯器。