Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如果我理解我所读的内容是正确的,那么虚拟机本质上就是中间代码的编译器。但从来没有说过 Delphi(作为非托管代码的一个例子)在其编译器中运行。将虚拟机描述为编译器会不会更容易混淆?
传统的编译器会一次性将源代码转换为目标代码。像 JVM 这样的虚拟机混合使用解释(字节码)和将字节码段编译为本机代码的即时编译器。将 VM 整体描述为编译器是不准确的。
有一个将源代码转换为 VM 代码(字节码)的编译器,以及一个用于 VM 代码 -> 机器代码的 JIT 编译器。VM是源代码-> VM编译器所针对的标准,不一定是具体的实现。可以用真机实现,不需要JIT编译。
虚拟机更接近模拟器(或者如果你的 JIT 真的很愚蠢,那就是解释器 :))
我认为人们试图用术语来捕捉的是虚拟机有一个额外的抽象层。因此,相同的代码,但每个平台的 VM 允许它在该特定平台上运行。