考虑到计算机组织,JVM 如何工作?
How does the JVM work considering computer organization?
我想我一直明白为什么 Java 是可移植的,直到我选修了计算机组织。
这是我对一个C程序从头到尾的解读:
C程序-->编译器-->汇编-->机器代码-->ISA-->微架构(计算机如何解释ISA)-->逻辑门-->电路-->设备
其中编译器必须了解 ISA。此外,汇编代码和机器代码也会因 ISA 而异。
Java 是这样的:
(在 JVM 内部):Java 程序 --> 编译器 --> 字节码
字节码是 JVM 的 ISA。
所以,我猜 JVM 也有自己的微架构来解释它的
ISA(字节码)。
这准确吗?
所以整个周期是:
(在 JVM 内部)Java 程序 --> 字节码(ISA)--> JVM 微架构 --> 主机硬件
另外,如果在处理器中实现微架构,JVM 是否需要使用主机的处理器之一?
更像是(按照你对 C 的分层):
Java program --> Java compiler --> bytecode --> JVM compiler --> assembly
--> machine code --> ISA --> micro architecture (how the computer interprets ISA)
--> logic gate --> circuit --> device
请注意,基本上有 两个 编译器。这就是 Java 实现可移植性的方式。
首先,java编译器将源代码编译成字节码。在 运行 时,Java 虚拟机 (JVM) 解释此字节码并生成机器码,该机器码将由 java 程序 运行 所在的机器直接执行。
访问 JVM、JRE 和 JDK https://javatutorialdetails.blogspot.com/2017/10/java-tutorial-in-details-step-by-step.html
的优秀教程
我想我一直明白为什么 Java 是可移植的,直到我选修了计算机组织。
这是我对一个C程序从头到尾的解读:
C程序-->编译器-->汇编-->机器代码-->ISA-->微架构(计算机如何解释ISA)-->逻辑门-->电路-->设备
其中编译器必须了解 ISA。此外,汇编代码和机器代码也会因 ISA 而异。
Java 是这样的: (在 JVM 内部):Java 程序 --> 编译器 --> 字节码
字节码是 JVM 的 ISA。
所以,我猜 JVM 也有自己的微架构来解释它的 ISA(字节码)。
这准确吗?
所以整个周期是: (在 JVM 内部)Java 程序 --> 字节码(ISA)--> JVM 微架构 --> 主机硬件
另外,如果在处理器中实现微架构,JVM 是否需要使用主机的处理器之一?
更像是(按照你对 C 的分层):
Java program --> Java compiler --> bytecode --> JVM compiler --> assembly
--> machine code --> ISA --> micro architecture (how the computer interprets ISA)
--> logic gate --> circuit --> device
请注意,基本上有 两个 编译器。这就是 Java 实现可移植性的方式。
首先,java编译器将源代码编译成字节码。在 运行 时,Java 虚拟机 (JVM) 解释此字节码并生成机器码,该机器码将由 java 程序 运行 所在的机器直接执行。
访问 JVM、JRE 和 JDK https://javatutorialdetails.blogspot.com/2017/10/java-tutorial-in-details-step-by-step.html
的优秀教程