LLVM 【Low Level Virtual Machine】

概要

LLVM(Low Level Virtual Machine)とは、様々なプログラミング言語(のコンパイラ)に対し、そのコードを様々なコンピュータOSに対応させることができる共通の基盤を提供するソフトウェアオープンソースソフトウェアとして公開されている。

LLVMはCPU機械語に似た独自の中間言語(LLVM IR)を規定しており、どのようなプログラミング言語で記述されたソースコードも、いったんこの中間言語で記述された中間コードに変換される。

中間コードは実行環境側で特定の機種やオペレーティングシステムOS)で直に動作するプログラムネイティブコード)へ変換して実行される。元の記述言語がなんであれ、中間言語に翻訳されたプログラムはLLVMが対応しているすべての環境で同じように動作させることができる。

ネイティブ形式への変換は、実行時に変換しながら実行する仮想マシンVMVirtual Machine)方式と、開発時に静的実行ファイルを生成して提供する方式が選択できる。中間言語へのコンパイル時にもネイティブ形式へのコンパイル時にも適切な最適化が実施され、高速に動作するプログラムが得られる。

プログラミング言語ソースコードから中間コードに変換するソフトウェアを「フロントエンド」(あるいはコンパイラフロントエンド)、中間コード最適化するソフトウェアを「ミドルエンド」中間コードを各機種向けのネイティブコードに変換するソフトウェアを「バックエンド」という。

プログラミング言語側から見れば、フロントエンドを用意すれば個別の機種やOSに対応しなくてもLLVMによって様々な環境に対応させることができる。各機種やOSから見れば、LLVMが自らの環境サポートしてくれれば、他の環境と共通の様々なプログラミング言語を利用してソフトウェア開発することができるようになる。

元々C言語C++言語プログラムを様々な環境で同じように動作させるために開発が始まり、ClangやGCCが有力なフロントエンドとして知られる。他の言語のフロントエンド開発されており、Objective-CFortranGo言語RubyLuaKotlinScalaなどのフロントエンドが公開されている。RustやSwiftのようにLLVMの利用を前提とする言語も登場している。

LLVMは2000年にイリノイ大学で開発が創始されたもので、正式なバージョンは2003年に初めて公開された。Apacheライセンス(例外条項あり)に基づいてオープンソースソフトウェアとして公開されており、誰でも自由に入手、改変、再配布などをなうことができる。

(2023.8.3更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる