LLVM コンパイラーフレームワークとインフラストラクチャチュートリアル
Chris LattnerVikram Adve

概要

低レベル仮想マシン (LLVM) はコンパイラー、オプティマイザー、Just-In-Time コードジェネレータ、およびその他のコンパイラー関連プログラムを簡単に構築できるようにするためのライブラリとツールの集合です。LLVM は、(コンパイラーの各段階間でコードを伝達し、ランタイムシステムを実行するために)オフラインのコード表現としても、(プログラムを分析および変換するために)コンパイラーの内部表現としても、単一の言語に依存しない仮想命令セットを使用します。この永続的なコード表現を使用すると、コンパイル時、リンク時、インストール時、実行時、または「アイドル時」(プログラムの実行間)に、共通する高度なコンパイラーテクニックのセットを適用できます。

LLVM インフラストラクチャの強みは、非常にシンプルな設計(理解と使用が簡単)、ソース言語の独立性、強力なミッドレベルオプティマイザー、自動コンパイラデバッグのサポート、拡張性、および安定性と信頼性です。LLVM は現在、さまざまな学術研究プロジェクトおよび商用プロジェクトをホストするために使用されています。LLVM には、C および C++ のフロントエンド(GCC 3.4 に基づく)、Forth ライクな言語(Stacker)用のフロントエンド、若いスキームフロントエンド、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}"
}