LLVM 編譯器框架與基礎架構教學
Chris LattnerVikram Adve

摘要

低階虛擬機器 (LLVM) 是一組程式庫和工具的集合,可以輕鬆建構編譯器、最佳化器、即時程式碼產生器以及許多其他與編譯器相關的程式。LLVM 使用單一、與語言無關的虛擬指令集,作為離線程式碼表示法(在編譯器階段和執行時系統之間傳遞程式碼)以及作為編譯器內部表示法(用於分析和轉換程式)。這種持續性的程式碼表示法允許在編譯時期、連結時期、安裝時期、執行時期或「閒置時期」(程式執行之間)應用一組通用的複雜編譯器技術。

LLVM 基礎架構的優勢在於其極其簡單的設計(易於理解和使用)、與原始碼語言無關、強大的中階最佳化器、自動化的編譯器除錯支援、可擴展性以及穩定性和可靠性。LLVM 目前被廣泛應用於各種學術研究專案和商業專案。LLVM 包含基於 GCC 3.4 的 C 和 C++ 前端、一個類似 Forth 語言的前端 (Stacker)、一個新興的 Scheme 前端,並且正在開發 Java 支援。LLVM 可以產生適用於 X86、SparcV9、PowerPC 的程式碼,或者可以發出 C 程式碼。

本教學說明 LLVM 虛擬指令集和 LLVM 編譯器系統的高階設計。為了說明 LLVM IR 中的概念,我們使用一個執行範例(透過參照到透過值的參數提升),以說明 LLVM 系統中幾個重要的 API。接下來,我們將描述 LLVM 提供的一些關鍵工具,並提及 LLVM 系統適合應用的幾個專案。

發表於

「LLVM 編譯器框架與基礎架構教學」,Chris Lattner 與 Vikram Adve。
LCPC'04 小型研討會:編譯器研究基礎架構,西拉法葉,印第安納州,2004 年 9 月。

下載

投影片講義

BibTeX 條目

@InProceedings{LattnerAdve:tutorial,
  author={Chris Lattner and Vikram Adve},
  title="{The LLVM Compiler Framework and Infrastructure Tutorial}",
  month={Sep},
  year={2004},
  address={West Lafayette, Indiana},
  booktitle="{LCPC'04 Mini Workshop on Compiler Research Infrastructures}"
}