ニコニコ大百科モバイル

7/2(月)よりスマホまたはPCでアクセスした場合、各デバイス向けのサイトへ自動で転送致します


LLVM


ヨミ: エルエルブイエム
掲示板をミル!
5カキコ!

Low Level Virtual Machine (LLVM) とは、プログラムのさまざまなステージ最適化を可にする、 コンパイラフレームワークである。


概要


コンパイラを作るのに使うライブラリツール群。
VMの名の通り中間言にした後、LLVMのツールで実行(JIT)、またはネイティブへのバイナリへの変換ができる。
このときコンパイル時や実行時に様々な最適化を施してくれて、より実行効率の良いプログラムを作れるようにしてくれる。
LLVM自体はC++実装されている。現在llvmをバックエンドに動くものとしてはllvm-gccやclangが有名だが、llvm-gccサポートくなる予定。


特徴


VMinstruction set と、LLVM の中で使われている中間表現は、同一である。
LLVM の命データは、基本int float double と、基本を拡した、関数ポインタ構造体配列がある。
VM限の仮想レジスタを持ち、これらの仮想レジスタは、SSA形式であり一度定義されたら二度と変更されない。
実行時にはは、中間表現を interpret しつつ、場合によっては JIT を行なっている。
この時にプロファイルも取っておく。
プログラムの実行を行なっていない時に、プロファイルに基づいて中間表現を最適化している。


LLVMの優れている点


LLVM が優れている点として、次5つがある。

persistent program information
大域的な最適化をするために、常に高レベルな中間表現を持っている。
offline code generation
時間のかかる最適化ができるように、実行時以外でも最適化ができるようになっている。
user-based profiling and optimization
ユーザの実行したプロファイルに基づいて、最適化が可である。
transparent runtime model
特定の実行モデル依存しない。
uniform, whole-program compilation
プログラム全体を見て最適化を行なえる。 LLVM ではリンク後に最適化ができるので、プログラム全体を見た最適化が可である。

関連リンク



最終更新日: 11/05/15 11:08
タグ検索 パソコン版を見る


[0]TOP
ニコニコ動画モバイル
運営元:ドワンゴ