我不明白LLVM和java(字节码)之间的区别,它们是什么?
-edit-由'他们是什么'我的意思是LLVM和java(字节码)之间的差异,而不是LLVM和java.
假设您的意思是JVM而不是Java:
LLVM是基于寄存器的低级虚拟机.它旨在抽象底层硬件并在编译器后端(机器代码生成)和前端(解析等)之间绘制一条简洁的线.
JVM是一个更高级别的基于堆栈的虚拟机.JVM提供垃圾收集,具有对象和虚方法调用等概念.因此,JVM为语言互操作性提供了更高级别的基础结构(非常类似于Microsoft的CLR).
(可以在LLVM上构建这些抽象,就像可以在C之上构建它们一样.)
这个问题在错误的脚上走了太糟糕了.我来找它寻找更详细的比较.
JVM字节码和LLVM bitcode之间的最大区别在于JVM指令是面向堆栈的,而LLVM bitcode则不是.这意味着JVM字节码不是将值加载到寄存器中,而是将值加载到堆栈中并从那里计算值.我相信这样做的一个优点是编译器不必分配寄存器,但我不确定.
LLVM bitcode更接近机器级代码,但不受特定体系结构的约束.例如,我认为LLVM bitcode可以使用任意数量的逻辑寄存器.也许更熟悉LLVM的人可以在这里说出来?