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 程式碼建構這個小而精巧的最佳化編譯器。
目前就讀於國立成功大學電機工程學系,熱愛各項系統軟體技術。