interpretation/compilation 一台电脑有几级?

How many levels of interpretation/compilation are there in a computer?

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

在JVM中有很多级别。

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

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

但什么是“直接”?

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

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

因此,在您到达执行者硬件之前,可以有 任意 层的解释。


AFAIK Java 通常仍被编译为虚拟机指令。然而,这些指令通常(或通常)在运行时编译为机器代码,因为程序被执行,称为 JIT compilation, Just In Time. Also, 1 据报道,一些 IBM 机器直接支持 Java 虚拟机,能够直接执行至少一些操作码(或多或少)。

然后是一些物理Java processors,专门用来直接执行Java字节码。


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