我以为我一直都明白为什么 Java 是可移植的,直到我学习了计算机组织。
这是我从头到尾对 C 程序的解释:
C程序-->编译器-->汇编-->机器码-->ISA-->微架构(计算机如何解释ISA)-->逻辑门-->电路-->设备
编译器必须了解 ISA。此外,程序集和机器代码将根据 ISA 有所不同。
Java 是这样的:(在 JVM 内部):Java 程序 --> 编译器 --> 字节码
字节码是 JVM 的 ISA。
所以,我猜JVM也有它自己的微架构来解释它的ISA(字节码)。
这是准确的吗?
所以整个周期是:(在 JVM 内部)Java 程序 --> 字节码(ISA) --> JVM 微架构 --> 主机硬件
另外,如果微架构是在处理器中实现的,JVM 是否需要使用主机的处理器之一?