0

如果我理解我所读的内容是正确的,那么虚拟机本质上就是中间代码的编译器。但从来没有说过 Delphi(作为非托管代码的一个例子)在其编译器中运行。将虚拟机描述为编译器会不会更容易混淆?

4

3 回答 3

2

传统的编译器会一次性将源代码转换为目标代码。像 JVM 这样的虚拟机混合使用解释(字节码)和将字节码段编译为本机代码的即时编译器。将 VM 整体描述为编译器是不准确的。

于 2010-07-07T09:52:11.310 回答
1

有一个将源代码转换为 VM 代码(字节码)的编译器,以及一个用于 VM 代码 -> 机器代码的 JIT 编译器。VM是源代码-> VM编译器所针对的标准,不一定是具体的实现。可以用真机实现,不需要JIT编译。

虚拟机更接近模拟器(或者如果你的 JIT 真的很愚蠢,那就是解释器 :))

于 2010-07-07T09:52:27.877 回答
1

我认为人们试图用术语来捕捉的是虚拟机有一个额外的抽象层。因此,相同的代码,但每个平台的 VM 允许它在该特定平台上运行。

于 2010-07-07T09:52:56.143 回答