当我们有一个目标文件(c / c ++或任何其他语言的任何程序的编译文件)时,它是否包含操作员可以直接理解的操作码,或者有更多级别的解释/编译产生所需的处理器的操作码。 在JVM的情况下,它是为真实处理器生成操作码还是为中间件生成代码。
答案 0 :(得分:2)
在JVM中有很多级别。
有
答案 1 :(得分:1)
C和C ++通常编译为机器代码,是的,处理器可以直接理解这些操作码。
但是什么是“直接”?
处理器可以有多个级别的内部解释。有一种解释称为microcode。我不确定两个或更多级别的术语,但你可以谷歌。
此外,程序可能会在相关计算机的(可能是硬件辅助的)模拟上执行。
因此,在您到达行动硬件之前,可以有任何级别的解释。
AFAIK Java通常仍然编译为虚拟机的指令。但是,这些指令通常(或通常)在运行时编译为机器代码,因为程序已执行,称为JIT编译,及时。据报道, 1 ,一些IBM机器直接支持Java虚拟机,能够直接执行至少一些操作码(或多或少)。
然后有许多物理Java processors,旨在直接执行Java字节码。
1 我无法通过快速谷歌搜索找到参考资料。可能是我从某篇文章中得到了错误的印象。也许一些IBM大型机刚刚针对Java虚拟机的执行进行了优化。 功能