「Low Level Virtual Machine」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
 
(2人の利用者による、間の3版が非表示)
1行目: 1行目:
'''Low Level Virtual Machine'''(ろーれべるばーちゃるましーん,'''LLVM''')とは、様々な[[プログラミング言語]]の様々な[[コンパイラ]]に共通の「[[最適化]]」を提供する目的で開発されているコンパイラ基盤である。
+
'''Low Level Virtual Machine'''(読み:ろーれべるばーちゃるましーん、略語:[[LLVM]])とは、様々な[[プログラミング言語]]の、様々な[[コンパイラ]]に、共通の「[[最適化]]」を提供する目的で開発されている[[オープンソース]]なコンパイラ基盤である。
  
LLVMでは様々な[[プログラミング言語]]に「共通」の「最適化」を提供するため、LLVM対応コンパイラからLLVMが指定する[[中間コード]]形式で出力してもらうい、LLVMはその[[中間コード]]に対してプラットフォーム非依存の最適化、プラットフォーム依存の最適化など段階的な最適化を行い、最終的に[[ネイティブコード]]を出力する。
+
==概要==
 +
LLVMでは様々な[[プログラミング言語]]に「共通の最適化」を提供するため、[[clang]]などのLLVM対応コンパイラからLLVMが指定する[[中間コード]]形式で出力してもらい、LLVMはその[[中間コード]]に対してプラットフォーム非依存の最適化やプラットフォーム依存の最適化などの「段階的な最適化」を行い、最終的に[[ネイティブコード]]を出力する。
  
LLVMは[[RISC]]と非常によく似た[[命令セット]]を持つ極めて実在の[[CPU]]の[[ネイティブコード]]に近い[[仮想マシン]]および[[中間コード]]のひとつとなっており、[[Java VM]](と[[Javaバイトコード]])や[[共通言語基盤]](と[[共通中間言語]])などと比べると抽象度は極めて低く、あくまで[[最適化]]に徹するため[[ガベージコレクション]]や[[セキュリティサンドボックス]]などの余計な機構は持たないという特徴がある。
+
LLVMは[[RISC]]と非常によく似た[[命令セット]]を持つ極めて実在の[[CPU]]の[[ネイティブコード]]に近い[[仮想マシン]]および[[中間コード]]のひとつとなっており、[[Java VM]](と[[Javaバイトコード]])や[[共通言語基盤]](と[[共通中間言語]])などと比べると[[抽象度]]は極めて低く、あくまで[[最適化]]に徹している。このため[[ガベージコレクション]]や[[セキュリティサンドボックス]]などの余計な機構は持たないという特徴がある。
  
LLVMでは「様々な[[プログラミング言語]]」という建前はあるが、その実態は[[GPL]]撲滅を訴える[[BSD]]信者たちにより、[[gcc]]にとって代わるべく開発が進められている[[clang]]と呼ばれる[[C言語]]の[[コンパイラ]]が主軸となっており、[[clang]]の意見・要望がまず第一優先されるという事実上の同一プロジェクトであると考えてほぼ間違いない。
+
==建前と本音==
 +
LLVMでは「様々な[[プログラミング言語]]」という建前はあるが、その実態は[[GPL]]撲滅を訴える[[BSD]]信者たちにより、[[gcc]]を駆逐すべく開発が進められている「[[clang]]」と呼ばれる[[C言語]]の[[コンパイラ]]が主軸となっており、[[clang]]の意見・要望がまず第一優先される。この2つのプロジェクトは事実上の同一プロジェクトであると考えてほぼ間違いない。
  
== 関連項目 ==
+
==関連項目==
* [[中間コード]]
 
* [[コンパイラー]]
 
  
== 参考文献 ==
+
*[[中間コード]]
<references/>
+
*[[コンパイラ]]
  
== 外部リンク ==
+
==外部リンク==
* http://llvm.org/
+
 
 +
*http://llvm.org/
  
 
{{stub}}
 
{{stub}}

2019年2月5日 (火) 05:42時点における最新版

Low Level Virtual Machine(読み:ろーれべるばーちゃるましーん、略語:LLVM)とは、様々なプログラミング言語の、様々なコンパイラに、共通の「最適化」を提供する目的で開発されているオープンソースなコンパイラ基盤である。

概要[編集 | ソースを編集]

LLVMでは様々なプログラミング言語に「共通の最適化」を提供するため、clangなどのLLVM対応コンパイラからLLVMが指定する中間コード形式で出力してもらい、LLVMはその中間コードに対してプラットフォーム非依存の最適化やプラットフォーム依存の最適化などの「段階的な最適化」を行い、最終的にネイティブコードを出力する。

LLVMはRISCと非常によく似た命令セットを持つ極めて実在のCPUネイティブコードに近い仮想マシンおよび中間コードのひとつとなっており、Java VM(とJavaバイトコード)や共通言語基盤(と共通中間言語)などと比べると抽象度は極めて低く、あくまで最適化に徹している。このためガベージコレクションセキュリティサンドボックスなどの余計な機構は持たないという特徴がある。

建前と本音[編集 | ソースを編集]

LLVMでは「様々なプログラミング言語」という建前はあるが、その実態はGPL撲滅を訴えるBSD信者たちにより、gccを駆逐すべく開発が進められている「clang」と呼ばれるC言語コンパイラが主軸となっており、clangの意見・要望がまず第一優先される。この2つのプロジェクトは事実上の同一プロジェクトであると考えてほぼ間違いない。

関連項目[編集 | ソースを編集]

外部リンク[編集 | ソースを編集]