Clang/LLVM(Low Level Virtual Machine)とは、CやObjective-Cなどのコンピュータ言語のコンパイラ環境です。
最近ではiOSやMac OS X、FreeBSDなどのOSでは、デファクトスタンダードであったGCC(GNUコンパイラコレクション)からLLVM/Clangへの置き換えが進みつつあります。
本書では、Clang/LLVMの仕組みと使い方(カスタマイズ法など)、Clang/LLVM独自のライブラリの使い方などについて詳細な解説を行っています。
はじめに
CHAPTER 1 LLVMとは
1 LLVMの概要
2 コンパイラの仕組み
3 特徴
4 対応プラットフォーム
5 LLVMプロジェクトの一覧
6 ライセンス
CHAPTER 2 セットアップ
1 ビルド環境の準備
2 ソースコードを取得する
3 makeでビルドする
4 CMakeでビルドする
5 Clangを使ってみる
6 クロスコンパイル
7 BrainFuckコンパイラをビルドする
CHAPTER 3 LLVM IR
1 LLVM IRの役割
2 LLVM IRの特徴
3 LLVM IRアセンブリのコードを読み解く
4 LLVM IRの詳細仕様① 値と型
5 LLVM IRの詳細仕様② アグリゲート型
6 LLVM IRの詳細仕様③ 命令
7 LLVM IRの詳細仕様④ 固有関数(Intrinsic Functions)
CHAPTER 4 Clang
1 Clangの特徴
2 Clangの主な言語拡張
3 静的解析ツール(Static Analyzer)
4 構文解析ライブラリとしてClangを利用する
5 LibClang
6 LibTooling
7 Clang Plugins
8 clang-formatコマンド
9 Sanitizer
10 ブロック構文とGCD
CHAPTER 5 Pass
1 最適化におけるPassの役割
2 optコマンド
3 Passのカテゴリと処理の流れ
4 独自のPassを作成して最適化の機能を追加する
5 Passの依存性の設定
CHAPTER 6 実際の開発環境
1 Xcode
2 Android NDK
3 Visual Studio
APPENDIX 主要開発コマンド
索引
正誤情報
初版第1刷に下記の誤りがありました。
当書籍について、現在以下の記述ミスが発見されております。 大変ご迷惑をおかけしますが、以下をご参照いただきますよう、よろしくお願いいたします。
◆初版の修正
P48のfig2.7
誤:コンパイラ(llvm-as)
↓
正:コンパイラ(llvm-cc1)
P93の本文11行目と12行目
誤:posion value
↓
正:poison value
P97のfig3.25の下から3行目の「概要」の項目
誤:整数を整数にキャスト
↓
正:整数をポインタにキャスト
P104の上のコードの6行目
誤:ブロック3開始。%4が使われる、つまり次のブロック番号は%7となる
↓
正:ブロック5開始。%6が使われる、つまり次のブロック番号は%7となる
P124の本文の下から5行目
誤:ベクターぺレーション命令
↓
正:ベクターオぺレーション命令
P154~P157の「clang-moderizeコマンド」の節
誤:clang-moderize
↓
正:clang-modernize
P157の「clang-moderizeコマンドのソースコードを読む」の節
誤:clang-moderize
↓
正:clang-modernize
P266の[C]の項目
誤:clang-moderize
↓
正:clang-modernize
お問い合わせ
本書に関するお問い合わせは、下記のボタンをクリックしてお問い合わせフォームよりお問い合わせください。