这些都不是.
LLVM曾经代表"低级虚拟机",但从未意味着Java或.NET意义上的完整虚拟机,并且"LLVM"已经不再是缩写.
LLVM的核心部分是LLVM IR.
IR代表内部表示,它是编译器中使用的术语,指的是在前端和后端之间使用的程序表示.IR允许解析语言的细节与代码生成的细节分离.在传统的编译器设计中,理想情况下,前端和后端组件可以自由混合,这样N个前端和M个后端就可以创建NxM编译器.
LLVM的IR与传统的内部表示不同; LLVM IR不是基于抽象语法树,而是一种汇编语言,或类似于Java和.NET的字节代码.这就是"虚拟机"的用武之地.但是,LLVM IR并不强制执行高级语义,例如.NET和JVM等数组边界检查.此外,LLVM IR可以进行JIT编译,但通常将其静态编译为本机代码,就像任何传统编译器的后端对IR一样.
LLVM已经发展成为围绕核心编译器基础架构的许多组件的总体项目.最初LLVM是用于操作它的IR和工具(优化,代码生成),但已经发展到包含更多内容,包括针对LLVM IR的一些前端,用于解析和生成程序集的机器代码框架,通用对象文件处理,调试器,链接器......
如果您有兴趣,每年都会举行一次LLVM会议,讨论LLVM和使用LLVM的项目,并记录和发布演示文稿:http://llvm.org/devmtg/.今年将在下周举行.
归档时间: |
|
查看次数: |
2061 次 |
最近记录: |