本文介紹 LLVM(低階虛擬機器),一個設計用於支援任意程式之「透明、終身程式分析與轉換」的編譯框架,它在編譯時期、連結時期、執行時期,以及執行之間的閒置時間提供高階資訊給編譯器轉換。LLVM 以靜態單一賦值形式(SSA)定義了一個通用的低階程式碼表示法,並具備幾個新穎的功能:一個簡單、與語言無關的型別系統,用於公開實作高階語言功能常用的基本元素;一個用於型別位址算術的指令;以及一個可以用於統一且有效地實作高階語言異常處理功能(以及setjmp/longjmp在 C 語言中)的簡單機制。LLVM 編譯框架和程式碼表示法共同提供了一系列關鍵功能的組合,這些功能對於程式的實際、終身分析和轉換非常重要。據我們所知,現有的編譯方法都沒有提供所有這些功能。我們將描述 LLVM 表示法和編譯框架的設計,並透過三種方式評估設計:(a) 表示法的規模和有效性,包括它提供的型別資訊;(b) 編譯器在幾個程序間問題上的效能;以及 (c) 說明 LLVM 如何為幾個具有挑戰性的編譯器問題帶來好處的例子。
請注意,本文取代了先前的技術報告。
「LLVM:一個適用於終身程式分析與轉換的編譯框架」,Chris Lattner 和 Vikram Adve。
2004 年程式碼生成與最佳化國際研討會 (CGO'04) 會議記錄,加州帕羅奧圖,2004 年 3 月。
@InProceedings{LLVM:CGO04, author = {Chris Lattner and Vikram Adve}, title = "{LLVM: A Compilation Framework for Lifelong Program Analysis \& Transformation}", booktitle = "{Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO'04)}", address = {Palo Alto, California}, month = {Mar}, year = {2004} }