本文描述了 LLVM(低階虛擬機),這是一個設計用於支援任意程式之*透明、終生程式分析與轉換*的編譯框架,它在編譯期、連結期、執行期和離線時為編譯器轉換提供高階資訊。LLVM 以靜態單一賦值(SSA)形式定義了一個通用的低階程式碼表示,並具備幾個新穎的功能:一個簡單的、*與語言無關*的類型系統,它公開了用於實作高階語言功能的常用基元;一個用於類型化地址算術的指令;以及一個可以用於統一且有效地實作高階語言異常處理功能(以及 C 語言中的setjmp/longjmp)的簡單機制。LLVM 編譯框架和程式碼表示共同提供了一組關鍵功能,這些功能對於程式的實際終生分析和轉換非常重要。據我們所知,現有的編譯方法沒有任何一種能夠提供所有這些功能。我們將從三個方面描述 LLVM 表示和編譯框架的設計並進行評估:(a) 表示的規模和有效性,包括它提供的類型資訊;(b) 編譯器針對幾個程序間問題的效能;(c) 說明 LLVM 為幾個具有挑戰性的編譯問題所帶來好處的示例。
「LLVM:一個終生程式分析與轉換的編譯框架」,Chris Lattner 和 Vikram Adve
伊利諾大學電腦科學系技術報告 #UIUCDCS-R-2003-2380,2003 年 9 月。
本文是發表在 CGO'04 的論文的早期版本,並已被其取代。
@TechReport{LattnerAdve:LifeLong, Author = {Chris Lattner and Vikram Adve}, Title = "{LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation}", Institution = "{Computer Science Dept., Univ. of Illinois at Urbana-Champaign}", Number = {UIUCDCS-R-2003-2380}, Type = {Tech. Report}, Month = {Sep}, Year = {2003} }