【えるえるぶいえむ】

LLVM とは?

公開:
💡 いろんな言語とCPUをつなぐ「共通の翻訳エンジン」だよ

様々なプログラミング言語のコンパイラ基盤となるオープンソースのコンパイラ基盤技術。

📌 このページのポイント
LLVM:言語とCPUをつなぐ共通基盤 Clang(C/C++) Swift Rust LLVM IR x86 ARM WebAssembly 各言語のフロントエンド CPUごとのバックエンド
LLVMのイメージ
ひよこ ひよこ
ペンギン先生、LLVMって何をしてくれるものなの?
ペンギン先生 ペンギン先生
いろんなプログラミング言語のコードを、いろんなCPU向けの機械語に変換する土台になってくれる技術なんだよ。
ひよこ ひよこ
言語ごとに変換の仕組みを作らなくていいの?
ペンギン先生 ペンギン先生
そこがLLVMのすごいところ!各言語はLLVMの中間表現(IR)に変換するだけで、その先の最適化やCPU向け変換は共通の仕組みを使い回せるんだよ。
ひよこ ひよこ
中間表現ってアセンブリ言語みたいなもの?
ペンギン先生 ペンギン先生
近いイメージだよ。CPUに依存しない、少し抽象的なアセンブリ言語だと思うと分かりやすいかな。
ひよこ ひよこ
どんな言語がLLVMを使ってるの?
ペンギン先生 ペンギン先生
SwiftやRust、C/C++用のClangなど、たくさんの言語のコンパイラで採用されているよ。
ひよこ ひよこ
名前にVirtual Machineって入ってるけど仮想マシンなの?
ペンギン先生 ペンギン先生
昔はそういう構想もあったけど、今は仮想マシンというより「コンパイラを作るための共通部品集」という位置づけなんだよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「LLVM」って出てきたら「いろんな言語のコンパイラが共通で使う変換・最適化の基盤」と思えればだいたいOK!
📖 おまけ:英語の意味
「Low Level Virtual Machine」 = 低水準仮想マシン
💬 開発初期の名残でこの名前が付いたけど、今は仮想マシンという枠を超えたコンパイラ基盤全体を指す言葉になっているんだよ。
← 用語集にもどる