the*_*row 18 compiler-construction compiler-theory llvm
LLVM和常规编译器之间有什么区别?
它是否更具动态性,因此可用于将通常非常动态的语言(即Javascript)编译成静态二进制代码?创建一个原则背后的原则是什么?
我知道编译器的龙书,但LLVM有这样的东西吗?
编辑:我发现了这个有趣的项目.
Pau*_*gar 26
LLVM和"常规编译器"之间存在一些区别,我将其假设为"gcc":
至于Javascript和其他动态语言,我们在动态语言社区中看到很多有趣的LLVM,Python和Ruby实现尝试它.但是,这些并不是静态编译器.他们专注于使用JIT.特别是,使用"混合模式解释器"优化长时间运行的可执行文件,它们最初解释程序,然后在运行时使用LLVM编译它们.我还没有看到使用LLVM的javascript引擎,但可能有一个.它不会创建静态可执行文件,除非在特殊情况下,或者为了减少Javascript版本.
至于创建LLVM的原因,它最初是Vikram Adve研究小组关于终身编译(这意味着JIT和链接时优化)的工作的一部分.获得博士学位后,克里斯拉特纳搬到了苹果公司,该公司正在大力推进该项目(可能是因为它获得了BSD许可,这在过去使用gcc引起了问题,这是GPL).
没有什么是常规编译器.它创建的主要原因是为编译器研究创建一个平台.因此,它的设计非常模块化,因此您可以处理编译器中处理您的研究的那部分,而不必担心编译器的其他部分.没有龙编译器就像没有LLVM书一样(你在龙书中读到的任何理论或任何其他编译器书都应该直接适用).事实上,虽然我有一段时间没有查看LLVM,但他们的文档很差.
| 归档时间: |
|
| 查看次数: |
5293 次 |
| 最近记录: |