C--与LLVM相比如何?

C--与LLVM相比如何?,c,compiler-construction,code-generation,llvm,c-minus-minus,C,Compiler Construction,Code Generation,Llvm,C Minus Minus,在了解了一点LLVM是如何工作的之后,我对如何生成可移植的低级代码以及如何构建这个“东西”模块感到非常兴奋 但我今天发现了C的存在——它似乎与LLVM有一些相同的概念 所以我在寻找一些信息来帮助我理解这两个项目之间的主要区别。。。以及为什么两者都存在 对我来说,LLVM看起来有点像编译器基础设施的终极瑞士军刀,而C——看起来远没有那么先进。它们在低级机器类型系统的表现力上有所不同 这台机器很有表现力。另一方面,机器将大量责任放在语言前端。引用“简单地说,没有高级类型——它甚至不区分浮点变量和整数

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

但我今天发现了C的存在——它似乎与LLVM有一些相同的概念

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


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

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

这台机器很有表现力。另一方面,机器将大量责任放在语言前端。引用“简单地说,没有高级类型——它甚至不区分浮点变量和整数变量。该模型提供了表示和类型系统的前端总控制”

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

实际上,LLVM现在的势头要大得多。它有一个JIT编译器,苹果公司正在使用它,人们正在使用它来处理各种各样的事情。有人把它叫做“”


另一方面,它要小得多,可能更容易完全理解。(我想象一个有献身精神的正常人可以完全理解它的所有方面。)

显然,你可以在标签中包含
-
。是的。我不知道实现的质量,但LLVM在邮件列表上似乎有更多的操作。使用“mm”是表示负数的常用方法。我相信它被用作许多C++绑定的笑话,比如GLYBMM。油嘴滑舌的——”。我不认为新来者会知道搜索cmm tho。@matt也已经作为一种与.@ThomasM.DuBuisson完全不同的语言存在。@ThomasM.DuBuisson:为什么说“完全不同”?从你的第一个链接:“Cmm是C语言的GHC实现。”尽管我不知道你在20个月前写评论时这是否属实。因此,如果我理解正确,主要区别在于这些编译器使用的中间表示的抽象级别。谢谢@阿洛伊斯·科查德,我就是这么想的。我不是编译器专家,我只是在堆栈溢出上玩一个。:-)