web-dev-qa-db-ja.com

C--はLLVMと比較してどうですか?

LLVMがどのように機能するかを少し学んだ後、ポータブルな低レベルコードを生成する方法と、この「もの」がどのようにモジュール化されるかについて、私は本当に興奮しています。

しかし、私は今日、Cの存在を発見しました-それはLLVMといくつかの概念を共有しているようです。

したがって、これら2つのプロジェクトの主な違いと両方が存在する理由を理解するのに役立つ情報を探しています。

私にとって、LLVMはコンパイラインフラストラクチャ用の究極のスイスアーミーナイフに少し似ていますが、C--ははるかに高度ではないように見えます。

55
Alois Cochard

低レベルのマシンタイプのシステムの表現力が異なります。

[〜#〜] llvm [〜#〜] マシンはかなり表現力豊かです。一方、 C- マシンは、言語のフロントエンドに多くの責任を負わせます。 C-- FAQ "から引用すると、 C- には高レベルの型がありません---浮動小数点も区別されません-整数変数からのポイント変数。このモデルは、フロントエンドに表現と型システムの完全な制御を提供します "

また、視覚的にも大きく異なります。 C- Cによく似ており、LLVMはアセンブラーによく似ています。

実用的には、LLVMは今より多くの勢いを持っています。それはJITコンパイラを持っています、Appleはそれを Dパイプラインのもの に使用していますそして人々はそれを GCCに接続する そしてあらゆる種類のものに使用しています 奇妙な そして 素晴らしい もの。誰かがそれを「 ほとんどばかげて扱いやすい "」と呼んだ。

一方、 C-はるかに小さく、おそらく完全に理解しやすいでしょう。 (私は、ある程度の献身的な普通の人がそれのすべての側面を完全に理解できると想像します。)

52
Prof. Falken