きつねさんとおぼえるLLVM

コミックマーケット83で「きつねさんとおぼえるLLVM」を発行したでゲソ!(あれっ?)

  • 場所:東京ビッグサイト
  • サークル名:MotiPizza
  • 日程:3日目 (12月31日)
  • スペース番号:東Y03a
  • 値段: 1部 1200円
  • 部数制限: 無し
  • おかげさまで開始1時間で売り切れました!!

本書の概要

今回が初めてという方向けとして改めて本書についてご紹介します。 LLVMというコンパイラ基盤に興味があるけどわからない,遊んでみたいという方向けにLLVMを使ったコンパイラを実際に作りながら紹介するという本になっています。 フロントエンド(中間表現出力まで)、ミドルエンド(最適化)、バックエンド(オブジェクト生成)と幅広く解説していますので多くの方に有用な内容を含んでいるのではないかと思います。 ただし、本書の内容が全て正しいという保証はありません。 著者二人が趣味で遊んでいて、知っていることをまとめた程度だと思って頂いて構いません。 本書のボリュームからわかる通り非常に多くの内容を詰め込んでいますので、 それらを参考に改めて確認して頂ければ一から学習するよりも理解が早くなると思います。

前回からの変更内容

内容としては前回の「3日で出来るLLVM」の加筆修正版となっています。 主な追加要素はイカ(?)のようになっています。

  • JITコンパイルの方法,
  • Passの書き方
  • オブジェクト生成の方法
  • などなど
前回購入された方でも十分満足できる内容が追加されているのではないかと思います。 全体で224ページあり、前回から70ページ増加しています。もちろん追加部分以外の修正も多く含んでいます。

きつねさんとおぼえるLLVM

章構成

  • はじめに
    • 本書の構成
    • この本で何ができるようになるの?
    • 本書の目的とターゲット層
    • 本書を読むにあたって必要となるもの
    • 本書内の記載について
    • お断り
  • コンパイラとLLVM
    • 一般的なコンパイラのお話
    • LLVMプロジェクト
  • 環境構築
    • 本章の概要と構成
    • 環境
    • インストール
    • ツールの種類と確認
  • 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の実装
    • その他の実装
    • コンパイルしよう!
    • バックエンドを作ってみて
  • あとがき
  • 索引
  • 参考資料