gpt4 book ai didi

compiler-construction - 口译员vs编译器vs虚拟机

转载 作者:行者123 更新时间:2023-12-03 10:21:59 25 4
gpt4 key购买 nike

我对口译员,编译器和虚拟机有疑问

现在我知道了解释器和编译器之间的区别,但是 VIRTUAL MACHINES 与前2个有什么不同? VM在口译员和编译器上的优缺点是什么?

非常感谢

最佳答案

虚拟机并不能完全替代编译器或解释器。我认为您正在考虑一个JIT编译器,即实现了多少个VM。

虚拟机本身恰如其名,实际上是一台实际上不存在的机器(处理器)。例如,大多数处理器没有处理内存分配的任何内在方式,也没有任何类型的知识。不过,Java VM具有new指令,该指令分配特定类的实例。 VM的设计者认为,这是该语言中足够重要的概念,值得它自己的操作码,而操作码是VM中的基本操作单元。

创建自己的指令集的优点通常是弥合较长的编译/优化时间与缓慢的解释器之间的差距。例如,在编译Java类时,您无需进行任何寄存器分配或内联操作,也无需进行任何传统的编译器工作。 JIT将在以后执行此操作,但仅对您运行了足够多次并分散到程序运行中的那部分代码起作用。 JVM的指令集与Java足够接近,因此初始编译很快,并且与Java源代码不同,它对于VM而言简单且快速读取。

对于解释器与JIT编译器,折衷通常围绕运行时性能与开发时间进行。 JIT的开发时间要长得多,但是解释器在运行时会慢很多。但是,在很多情况下,例如脚本和中小型网站,该程序的运行时间不足以使您真正看到使用JIT的好处。

我还应该提到像VMware这样的软件。这也是一个虚拟机,但它使用的指令集也恰好在实际硬件上使用。它与语言VM具有相同的基本概念,因为它假装为一台物理上并不存在的机器,但实际上它是不同的且非常复杂。

关于compiler-construction - 口译员vs编译器vs虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14678060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com