2026-08-09 –, TR213
shecc 是個精簡的 C 語言最佳化編譯器,以約一萬行 C 程式實作出完整編譯流程,涵蓋語法解析、中間表示 (IR)、SSA (static single assignment form)、經典最佳化,及程式碼產生。在不依賴外部工具的前提下,可直接產生 Arm 與 RISC-V 架構的執行檔,並具備自我編譯 (self-hosting) 能力。
最初 shecc 僅支援靜態連結輸出,自 2025 年起,逐步導入動態連結機制,使產生的執行檔可於執行時期連結 glibc,進而使用更完整的 C 標準函式庫。本議程將以 shecc 為例,說明如何將僅支援靜態連結的編譯器演進為支援動態連結的系統,並探討以下關鍵議題:
- 為 ELF 執行檔產生 dynamic sections,使其成為可動態連結的格式
- 解析函式呼叫於執行時期如何透過 PLT/GOT 與動態連結器完成重定位,並正確導向 glibc 實作
- 改進 Application Binary Interface (ABI),尤其針對 Arm 架構,使函式呼叫符合規範並正確運作
畢業於國立高雄大學資訊系(2022 年),致力於投入系統軟體開發,目前在編譯器領域累積了一點點成果