編譯器 (Compiler)

從高階語言到機器碼的完整轉換

什麼是編譯器?

編譯器是將人類可讀的高階程式語言翻譯成機器碼的系統軟體。翻譯過程涉及語法分析、語意理解、優化轉換和碼生成等多個層次的處理。

歷史演進

核心組成

詞法分析

將原始程式碼轉換為 Token 序列,包括關鍵字、識別符、常值、運算子、分隔符等。

語法分析

將 Token 序列轉換為抽象語法樹(AST),驗證程式碼是否符合文法規則。方法有自頂向下(遞迴下降、LL(1))和自底向上(LR、LALR)。

語意分析

型態檢查、作用域檢查、控制流檢查,確保程式意義正確。

中間表示式(IR)

平臺無關的程式表示,如三地址碼(TAC)、靜態單一賦值(SSA)、控制流圖(CFG)。LLVM IR 是最廣泛使用的 IR 之一。

程式碼最佳化

本地最佳化(常數摺疊、死碼消除)、全域最佳化(資料流分析、迴圈最佳化)、目標碼生成(指令選擇、暫存器分配)。

本課程範例

相關連結