最終更新:2013-09-21 (土) 04:06:21 (4036d)  

LLVM
Top / LLVM

Low Level Virtual Machine

http://llvm.org/

モジュール化され再利用可能なコンパイラや関連ツール群技術を開発するプロジェクト

概要

  • 各種言語をフロントエンド仮想マシン向け中間コードに変換するフロントエンドと、中間コードを実マシン向けの最適なコードに変換するオプティマイザ?/コードジェネレータ?から構成されている
  • もともとはC/C++用に開発されたものだが、現在のLLVMはプログラミング言語非依存となっており、PythonRuby、あるいはAdobe Flashで使用されているActionScriptといったスクリプト言語もフロントエンドとして利用できる。
  • LLVMではGCCが行うような静的コンパイラ?としてバイナリを生成できるほか、JavaのようにJIT (Just-In-Time)コンパイラのような形式で中間言語のままダイナミック実行させることも可能。

LLVM/バージョン

フロントエンド

バックエンド

アーキテクチャ

ツール

  • lli - llvmアセンブリを実行するインタープリタ
  • llc - llvmアセンブリをネイティブのアセンブリに変換
  • LLDB - デバッガ

コマンド

http://llvm.org/docs/CommandGuide/index.html

Basic Commands

  • llvm-as? - LLVM assembler
  • llvm-dis? - LLVM disassembler
  • opt - LLVM optimizer
  • llc - LLVM static compiler
  • lli - directly execute programs from LLVM bitcode
  • llvm-link? - LLVM bitcode linker
  • llvm-ar? - LLVM archiver
  • llvm-nm? - list LLVM bitcode and object file’s symbol table
  • llvm-prof? - print execution profile of LLVM program
  • llvm-config? - Print LLVM compilation options
  • llvm-diff? - LLVM structural ‘diff’
  • llvm-cov? - emit coverage information
  • llvm-stress? - generate random .ll files
  • llvm-symbolizer? - convert addresses into source code locations

Debugging Tools

  • bugpoint? - automatic test case reduction tool
  • llvm-extract? - extract a function from an LLVM module
  • llvm-bcanalyzer? - LLVM bitcode analyzer

Developer Tools

  • FileCheck? - Flexible pattern matching file verifier
  • tblgen? - Target Description To C++ Code Generator
  • lit? - LLVM Integrated Tester
  • llvm-build? - LLVM Project Build Utility
  • llvm-readobj? - LLVM Object Reader

Ubuntu/パッケージ

llvm

  • bugpoint?
  • llc
  • llvm-ar?
  • llvm-as? - LLVM assembler
  • llvm-bcanalyzer?
  • llvm-config?
  • llvm-cov?
  • llvm-diff?
  • llvm-dis?
  • llvm-dwarfdump?
  • llvm-extract?
  • llvm-ld?
  • llvm-link?
  • llvm-mc?
  • llvm-nm?
  • llvm-objdump?
  • llvm-prof?
  • llvm-ranlib?
  • llvm-rtdyld?
  • llvm-size?
  • llvm-stub?
  • llvm-tblgen?
  • macho-dump?
  • opt - LLVM optimizer

llvm-runtime?

Xcode

関連

参考