LLVM:一個適用於
終生程式分析與轉換的編譯框架
Chris LattnerVikram Adve

摘要

本文描述了 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 的論文的早期版本,並已被其取代。

下載

BibTeX 條目

  @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}
  }