58

在了解了 LLVM 的工作原理之后,我对如何生成可移植的低级代码以及如何构建这个“东西”感到非常兴奋。

但是我今天发现了 C 的存在——它似乎与 LLVM 共享一些概念。

所以我正在寻找一些信息来帮助我理解这两个项目之间的主要区别......以及为什么两者都存在。

对我来说,LLVM 看起来有点像编译器基础设施的终极瑞士军刀,而 C 看起来远没有那么先进。

4

1 回答 1

54

它们在低级机器类型系统的表现力上有所不同。

LLVM机器非常具有表现力。另一方面,C 机器将很多责任放在语言前端。引用C-- FAQ“简单地说,C--没有高级类型——它甚至不区分浮点变量和整数变量。这个模型让前端完全控制表示和类型系统”

在视觉上它们看起来也有很大不同。C--看起来很像 C,LLVM 看起来很像汇编程序。

务实地说,LLVM 现在有更多的动力。它有一个 JIT 编译器,Apple 将它用于3D 管道,人们正在使用它连接到 GCC和各种奇怪奇妙的东西。有人称之为“几乎荒谬地易于使用”。

另一方面,C--小得多,可能更容易完全理解。(我想一个有奉献精神的普通人可以完全理解它方方面面。)

于 2010-10-08T14:50:18.220 回答