從零開始建構 C 語言最佳化編譯器

By 陳孟鴻

議題

從零開始建構 C 語言最佳化編譯器

TR411 [[ new Date( '2024-08-03 07:30:00+00:00' ).toLocaleDateString('ja', {year: 'numeric', month: '2-digit', day: '2-digit'}) ]] [[ new Date( '2024-08-03 07:30:00+00:00' ).toLocaleTimeString('zh-Hant', {hour12: false, hour: '2-digit', minute:'2-digit'}) ]] ~ [[ new Date( '2024-08-03 08:00:00+00:00' ).toLocaleTimeString('zh-Hant', {hour12: false, hour: '2-digit', minute:'2-digit'}) ]] 中文 Chinese
加入行事曆 加入關注 加入關注 已關注

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

講者

陳孟鴻

陳孟鴻

目前就讀於國立成功大學電機工程學系,熱愛各項系統軟體技術。

System Software Track 系統軟體社群議程 LRBFCW general (30mins)