计算机中有多少级别的解释/编译?

时间:2016-03-13 17:10:04

标签: java c++ cpu-architecture

当我们有一个目标文件(c / c ++或任何其他语言的任何程序的编译文件)时,它是否包含操作员可以直接理解的操作码,或者有更多级别的解释/编译产生所需的处理器的操作码。                            在JVM的情况下,它是为真实处理器生成操作码还是为中间件生成代码。

2 个答案:

答案 0 :(得分:2)

在JVM中有很多级别。

  • 解释了间接使用机器代码操作码的代码(C / C ++没有这个阶段,除非你像JVM那样添加自己的方式来执行此操作)
  • 机器代码,可能是CISC指令。
  • 如果您在内核虚拟机上运行,​​您的KVM可以修改一些指令。
  • CPU可以将这些转换为存储在其L0指令缓存中的RISC指令。

答案 1 :(得分:1)

C和C ++通常编译为机器代码,是的,处理器可以直接理解这些操作码。

但是什么是“直接”?

处理器可以有多个级别的内部解释。有一种解释称为microcode。我不确定两个或更多级别的术语,但你可以谷歌。

此外,程序可能会在相关计算机的(可能是硬件辅助的)模拟上执行。

因此,在您到达行动硬件之前,可以有任何级别的解释。

AFAIK Java通常仍然编译为虚拟机的指令。但是,这些指令通常(或通常)在运行时编译为机器代码,因为程序已执行,称为JIT编译,及时。据报道, 1 ,一些IBM机器直接支持Java虚拟机,能够直接执行至少一些操作码(或多或少)。

然后有许多物理Java processors,旨在直接执行Java字节码。

1 我无法通过快速谷歌搜索找到参考资料。可能是我从某篇文章中得到了错误的印象。也许一些IBM大型机刚刚针对Java虚拟机的执行进行了优化。 功能