LLVM Tutorialをやっている(1)~4章途中~
LLVM Tutorial: Table of Contents — LLVM 8 documentation
コンパイラを勉強する機運が高まっているので、ずっとやりたかったLLVMに手を出しています。
対象とする言語仕様としては、Go言語でつくるインタプリタより、かなり簡素なものです。 コード(LLVM IR)生成、JIT、最適化など、Go言語でつくるインタプリタではやらなかったことが勉強できて良い感じです。
よくできていて、簡単にJITで実行できちゃいます。すごい。
と比較すると、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