読者です 読者をやめる 読者になる 読者になる

きつねさんとおぼえるLLVM (LLVM解説本) をC83で出します


前回の「3日で出来るLLVM」にひきつづきLLVM解説本をC83で出します。
タイトルは表紙のきつねさんが特徴の「きつねさんとおぼえるLLVM」です。 LLVM狐本で覚えて下さい!
フロントエンド,ミドルエンドは柏木餅子(id:motipizza, @)、バックエンドは私が担当しました。
表紙は引き続き矢上さん(blog,tumblr)に書いて頂きました。
(前回同様タイトルと内容があっているとは限りません!!)

内容としては前回からの加筆修正版となっており、主な追加要素としてはJITコンパイルの方法, Passの書き方, バックエンドではオブジェクト生成の方法などがあります。
前回購入された方でも十分満足できる内容が追加されているのではないかと思います。
特に餅さんが担当したJITコンパイルのところは非常に面白い話になっています。
私が担当したバックエンドも構成を見直して全体的に書き直したのでわかりやすくなったと思います。
餅さんからは「やっとよめる日本語になった」とひどいありがたいお言葉を頂きました。
全体で224ページあり、前回から70ページ増加しています。もちろん追加部分以外の修正も多く含んでいます。

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

以下、頒布場所の詳細になります。部数制限もないので知り合いの方に頼むなどして10部20部100部でも買って下さい!
コミックマーケット83
場所:東京ビッグサイト
サークル名:MotiPizza
日程:3日目 (12月31日)
スペース番号:東Y03a
値段: 1部 1200円
部数制限: 無し

追記
取り置きも可能になりました。
取り置き希望の方はこちらにコメントをお願いします。
今回は前回よりも多めに刷っていますので14時くらいまでは残っていると思いますが、
どうしてもという方はぜひご利用下さい。

以下、章構成

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