この記事では、LLVM(低レベル仮想マシン)、コンパイラフレームワークについて説明します。これは、任意のプログラムの「透過的なプログラム分析および変換」をサポートするように設計されています。コンパイラ変換に、コンパイル時、リンク時、ランタイム、およびオフラインにハイレベルの情報が提供されます。LLVMは、スタティックシングルアサインメント(SSA)形式で一般的な低レベルコード表現を定義します。新機能としては、高レベルの言語機能を実装するために一般的に使用されるプリミティブを公開する単純な「言語に依存しない」型システム、型付きアドレス演算のための命令、そして高レベル言語の例外処理機能を実装するために使用できる(そしてsetjmp/longjmpC言語の場合)均等かつ効率的に機能する単純なメカニズムなどがあります。LLVMコンパイラフレームワークとコード表現は、プログラムの実際的な生涯にわたる分析と変換に欠かせない重要な機能を組み合わせて提供します。現在のコンパイルアプローチでは、これらすべての機能を提供しているものは、他に存在しません。LLVM表現とコンパイラフレームワークの設計について説明し、表現のサイズ、および提供される型情報を含むその設計を3つの観点から評価します。(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} }