C-- 与 LLVM 相比如何?
在了解了 LLVM 的工作原理之后,我对如何生成可移植的低级代码以及构建这个“东西”的模块化程度感到非常兴奋。
但今天我发现了 C 的存在——它似乎与 LLVM 共享一些概念。
因此,我正在寻找一些信息来帮助我理解这两个项目之间的主要区别......以及为什么两者都存在。
对我来说,LLVM 看起来有点像编译器基础设施的终极瑞士军刀,而 C-- 看起来远没有那么先进。
After learning a bit of how LLVM work I'm really excited about how portable low-level code can be generated and how modular this 'thing' is built.
But I discovered today the existence of C-- that seems to share some concepts with LLVM.
So I'm looking for some information helping me understand the main differences between these two projects... and why both exist.
For me LLVM looks a bit like the ultimate Swiss Army knife for compiler infrastructure, and C-- looks far less advanced.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它们的不同之处在于低级机器类型系统的表达方式。
LLVM 机器非常具有表现力。另一方面,C-- 机器将语言前端的很多责任。引用自 C-- FAQ:"简而言之, C-- 没有高级类型 - --它甚至不区分浮点变量和整数变量。该模型为前端提供了对表示和类型系统的完全控制”
从视觉上看,它们看起来也有很大不同。 C-- 看起来很像 C,LLVM 看起来很像很像汇编程序。
实际上,LLVM 现在有更多的动力。它有一个 JIT 编译器,Apple 将其用于 3D 管道事物,人们使用它来连接到 GCC 和各种奇怪 和 精彩的事情。有人称其为“几乎非常容易使用”。
另一方面,C--很多 更小并且可能更容易完全理解。 (我想一个有奉献精神的普通人可以完全理解它的所有方面。)
They differ in how expressive the low level machine type system is.
The LLVM machine is pretty expressive. The C-- machine on the other hand, puts a lot of responsibility on the language front end. Quoting from the C-- FAQ: "simply, C-- has no high-level types---it does not even distinguish floating-point variables from integer variables. This model gives the front end total control of representation and type system"
Also visually they look a lot different. C-- looks a lot like C, LLVM looks a lot like assembler.
Pragmatically, LLVM has a lot more momentum right now. It has a JIT compiler, Apple is using it for 3D pipeline things and people are using it to connect to GCC and all sorts of weird and wonderful things. Someone called it "almost absurdly easy to work with".
On the other hand C-- is much smaller and probably easier to entirely comprehend. (I imagine a normal person with some dedication can fully understand all aspects of it.)