きつねさんでもわかるLLVM

~コンパイラを自作するためのガイドブック~

インプレスジャパン様より「きつねさんでもわかるLLVM ~コンパイラを自作するためのガイドブック~」が発売されます。

柏木 餅子 風薬
インプレスジャパン
売り上げランキング: 6,642

著者一同も驚きの一般書籍として発売です。 コミケからステップアップしてここまでやってきました。 今までの集大成として、一般書籍としても耐えられるように表現や内容を見直しました。

本書の概要

インプレスジャパンの紹介ページより抜粋

本書は、コミックマーケット(通称:コミケ)より発掘された、秀逸なLLVMの技術書です。 Clangをはじめ、LLVMを利用した言語処理系は多く存在していますが、まだ世の中には技術情報が非常に少ないのが現状です。そのLLVMを、著者2名が自ら解読しながら、フロントエンドからミドルエンド・バックエンドにいたるまでを丁寧に解説しました。 フロントエンドの作り方を字句解析から順に説明し、LLVMのコアである最適化を行うパスの作り方、オブジェクト生成までを解説したバックエンドの作り方など、LLVMを使用してコンパイラを作成するうえで必要になることを一通り網羅しています。 本書を通して、LLVMがさらに技術者の皆様に広まり、活用されることを祈ります。

電子書籍版との違い

違いは以下の通りになります。

  • 文章校正による表現の変更
  • 表紙の変更
  • 中のきつねさんが増加!
  • 値段の変更
本書と電子書籍版との内容的な違いは実はありません。(電子書籍版のv0.9.2から同内容になります)

きつねさんでもわかるLLVM

章構成

  • はじめに
    • 本書の構成
    • この本で何ができるようになるの?
    • 本書の目的とターゲット層
    • 本書を読むにあたって必要となるもの
    • 本書内の記載について
  • コンパイラとLLVM
    • 一般的なコンパイラのお話
    • LLVMプロジェクト
  • 環境構築
    • 本章の概要と構成
    • 環境
    • インストール
    • ツールの種類と確認
    • opt
  • LLVM IR
    • 本章の概要と目的
    • LLVM IRの特徴
    • LLVM IR の構成
    • LLVM の型とLLVM アセンブリの主な命令
    • 基本的なLLVMの中間表現
    • 条件文
    • ループ文
    • アグリゲート型へのアクセス
    • Metadata
  • フロントエンドを作る
    • 本章の概要
    • 構文規則の定義
    • 目標の設定
    • 字句解析
    • 構文解析
    • 意味解析
    • コード生成
    • main の作成
    • コンパイルと動作確認
    • mem2reg の適用と組込み関数の導入
    • JITをやってみる
    • Metadata を埋め込みたい場合
    • CommandLine ライブラリ
  • Passについて
    • Passの概念
    • Passの種類
    • その他のPass に実装すべきもの
    • 簡単なPass を実装してみる
    • 無用命令の削除を実装してみる
    • ループの繰り返し回数のカウント
    • 適用されるPass を確認する
  • バックエンドを作る
    • LLVMのバックエンドを学ぶ前に
    • LLVMのバックエンドは何をするものか
    • バックエンドの流れ
    • 目標を決める
    • ターゲットの仕様を決める
    • TableGen
    • ターゲットのクラス構成
    • TableGenの記述(Sample.td)
    • 共通クラスの実装
    • SelectionDAGISelの実装
    • AsmPrinterの実装
    • フレーム処理の実装
    • Disassemblerの実装
    • その他の実装
    • コンパイルする
    • バックエンドを作ってみて