LLVM Tutorialをやってみた

自作プログラミング言語というものに手を出してみたくて、LLVM Tutorialをやってみました。

LLVM Tutorialでは、Kaleidoscopeという非常に簡単なプログラミング言語を実装を通してLLVMフロントエンドを学べます。

LLVM Tutorialでは、以下の言語機能を実装します。

  • ローカル変数を定義する(型はdoubleのみ)
  • 関数を定義する
  • 定義した関数を呼び出す
  • 比較や四則演算をする
  • 条件分岐
  • forループ

やったこと

LLVM Tutorialを始める前の私は、言語処理系(parserなど)の知識、LLVMの知識、C言語C++の知識がほぼない状態でした。

なので、LLVM Tutorialを始める前にまず、以下のサイトでC言語C++について学習しました。

C言語C++の入門の済ませたところで、LLVM Tutorialを開始したのですが、3章でLLVM IRの生成が絡んでくるとわけがわからなくなりました。

そこで、一旦LLVM Tutorial進めるのを中断し、LLVM IRについて学習しました。

その後、LLVM Tutorialを再開します。

3章が終わったところで、このリポジトリを参考にファイルを分割しました。 LLVM Tutorialでは、一つのファイルにコードを追加し続ける方式で進んでいきます。 そのため、ソースコードは巨大な単一ファイルとなるのですが、これは可読性が非常に悪いため、ファイルを分割しました。 このファイルの分割は、その後の作業効率にかなり貢献したように思います。

そして、LLVM Tutorial完遂までいきました。

感想

プログラミング言語についての解像度が少し上がりました。
今回は ソースコード->中間表現(LLVM IR) の実装だったので、機械語アセンブリのような低レイヤは扱いませんでしたが、いつかここらへんにも手を出してみたいです。