C82:LLVM解説本の補足

風薬(id:sabottenda)の方の宣伝記事に予想以上の反響があったようなのですが、
今反応してくださってる人がどういった層の方なのか把握できていません.
「買ってみたけど期待してた内容と違う」なんてことになったらお互い不幸なので
C82で発行予定のLLVM 解説本について,特に私が書いた前半部分に関して少し補足をしておきます.

概要とターゲット層について.

今回の本の主題は"LLVM を使用したコンパイラの作成方法の解説"です.
LLVM の使用方法を書くのか,LLVM について深く掘り下げるのか
ということは風薬(id:sabottenda)と何度か話し合ったのですが,
私には現時点で後者を説明するだけの能力がないと感じており,最終的に上記の内容にしました.
また,今回の本は初心者をターゲットにしています.
これは基本的に趣味レベルでLLVM を触っている人間による本なので,中・上級者向けの内容は難しいという判断です.


その他,今回触れていない話や突込みどころも多々あります.

2章(コンパイラLLVM)

2章でLLVMLLVM のサブプロジェクトの解説をしているのですが,サブプロジェクトについては簡単な紹介程度に留めています.
サブプロジェクトの方は私自身あまり使い込んでいないので深い解説が出来ないというのが実情です.
解説できる程度に勉強したら今後追加されるかもしれません.
(次があれば)

4章(LLVM IR)

4章ではLLVM IR の解説を行っていますが,説明できていないことが多々あります.
これは全て説明しようとすると膨大な量になることなどから,
"LLVM IR を理解するための最低限の情報"
という所を目標にしたため,
また私の理解が足りてない部分があるためです.
記載している内容としては,
LLVM IR の構成の簡単な説明,
DataLayout とLLVM IR の命令(一部の命令は省略),
実例(HelloWorld,if-else,for,アグリゲート型へのアクセス) を用いた解説
などです.
それ以外の項目,例えばMetaData やIntrinsic Functions には触れていません.

5章(フロントエンドを作る)

今回の本は約150ページなのですが,そのうちのかなりの割合がこの5章にはいっています.
その中で字句解析〜意味解析までは一般的な話なのでLLVM はほぼ絡んでこないのですが,その説明についてもそれなりのページ数を割いています.
この点は純粋にLLVM についてのみ知りたい方には不満かもしれません.
LLVM IR の生成方法さえわかればあとはわかりますよね?で終わりとしてもいいかもしれない部分ですが,
(実際そこに焦点をあてている記事もよくあるけども)
私としては今回は"コンパイラを作る"という話を一貫してしたかったので上記内容にもある程度のページを割きました.
初心者向けという最初の前提もありますしね.
あとC言語のサブセットを題材としてフロントエンドの作成を説明していますが,Clang のライブラリを使用していません.
これは私があまりClang の方は詳しくないというのと,特定の言語に寄った説明にしたくはなかったからです.
そういう意味でC言語のサブセットというのはあまり良い例ではなかったかもしれないです.
なお,JIT の実装についても今回は見送っています.
これは単純に時間的に間に合わなかったせいなので,次があれば追加したいと考えています.

その他

LLVM の解説なのにgccコンパイルするの?とか
作業ディレクトリの場所おかしくない?とか
細々とした突込み所は色々あります。
この辺は半分直し忘れで半分私の悪しき慣習です.

今後について

今後のことは夏コミが終わって落ち着いたらちゃんと考えますが,
上記の通り筆者として色々と内容に心残りがあるので,次があるのであればもっと内容を充実させて完全版的な位置づけのものにしたいなと考えています.
一人でやってることではないので要相談ですが.



前回記事に価格情報を載せてなかったので,最後に改めてその辺りの情報を.

サークル名:MotiPizza
日程:2日目 (8月11日)
スペース番号:西し39a
価格:800円
持込部数:60部