c - C-- 与 LLVM 相比如何?

标签 c compiler-construction code-generation llvm c-minus-minus

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

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

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

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

最佳答案

它们的不同之处在于底层机器类型系统的表现力。

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

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

从实用的角度来说,LLVM 现在的势头要大得多。它有一个 JIT 编译器,Apple 将其用于 3D pipeline things人们用它来 connect to GCC和各种weirdwonderful事物。有人称它为“almost absurdly easy to work with”。

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

关于c - C-- 与 LLVM 相比如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3891513/

相关文章:

c - strtok() 给出意想不到的结果

c++ - 自定义 C++ 类上的错误

c - 如何在结构中打包结构

java - 自动生成Java源码

c++ - 为什么标记为 "hidden"的函数在从 gcc 4 中的外部模块调用时不会抛出错误?

c - 使用列表进行堆栈操作

c - c中的宏定义

c - 编译 Neko VM OS X 时出错

c# - WPF/XAML 代码生成器

c# - 从单元测试自动生成类?