最終更新:2013-09-21 (土) 04:06:21 (4036d)
LLVM
Top / LLVM
Low Level Virtual Machine
モジュール化され再利用可能なコンパイラや関連ツール群技術を開発するプロジェクト
概要
- もともとはC/C++用に開発されたものだが、現在のLLVMはプログラミング言語非依存となっており、PythonやRuby、あるいはAdobe Flashで使用されているActionScriptといったスクリプト言語もフロントエンドとして利用できる。
- LLVMではGCCが行うような静的コンパイラ?としてバイナリを生成できるほか、JavaのようにJIT (Just-In-Time)コンパイラのような形式で中間言語のままダイナミック実行させることも可能。
LLVM/バージョン
フロントエンド
- Clang - C言語/C++/Objective-Cコンパイラ
- DragonEgg - AdaやFortranなどGCCでサポートされているプログラミング言語をサポート
- llvm-gcc - C/C++コンパイラ (LLVM 3.0で削除)
バックエンド
アーキテクチャ
ツール
コマンド
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