LLVM Tutorialをやっている(1)~4章途中~

LLVM Tutorial: Table of Contents — LLVM 8 documentation

コンパイラを勉強する機運が高まっているので、ずっとやりたかったLLVMに手を出しています。

対象とする言語仕様としては、Go言語でつくるインタプリタより、かなり簡素なものです。 コード(LLVM IR)生成、JIT、最適化など、Go言語でつくるインタプリタではやらなかったことが勉強できて良い感じです。

よくできていて、簡単にJITで実行できちゃいます。すごい。

低レイヤを知りたい人のための Cコンパイラ作成入門

と比較すると、1歩1歩が大きすぎるところは不満点ですね。 最初にLexerとParserを書いて、コンパイル通すまでに400行、テストなしで書かないといけないです。

LLVMの概要は把握できるようになっており、LLVMソースコードリーディングにもつなげられそうです。 Rustのバックエンドなので、LLVMが読めると一気に世界が広がります!

一通りKaleidoscopeが完了したら、Tutorial: Creating an LLVM Backend for the Cpu0 Architectureをやっていきたいですね。

Table of Contents — Tutorial: Creating an LLVM Backend for the Cpu0 Architecture