6

我知道基于寄存器和基于堆栈的虚拟机如何独立工作。我知道两者的优点和缺点。我想知道的是,有没有人试图合并这两个?基于寄存器+堆栈的虚拟机将如何工作?

我试图搜索网络的存在这样的虚拟机,但无济于事。我得到的最好结果是一篇关于混合虚拟机的文章(HyVM)。如果这样的虚拟机确实是为编程语言而创建的,那么我有兴趣查看其源代码以了解其工作原理。

也许有人可以指引我找到这样一个虚拟机的正确方向,或者将我链接到一篇文章或博客文章,详细阐述这个主题。

+0

非常有趣。你在寻找什么?您是否期待看到混合方法对严格基于寄存器的VM或基于堆栈的VM有什么优势?你的问题对我来说还不清楚。 –

+0

我想了解如何实施混合虚拟机。优点非常明显 - 您可以使用堆栈操作来评估像'5 2 3 - +'这样的表达式:'push 5','push 2','push 3','sub','add';然后你可以使用'store eax'这样的指令将结果存储在一个寄存器中。这为您提供了这两种虚拟机的优势。整个程序会写成'x = 5 2 3 - +',其中'x'是一个SSA变量。我不清楚VM的内部结构 - 是内存中还是处理器中的堆栈,堆栈评估成本等等。 –

回答

5

看看Forth。它使用虚拟机,主要是面向堆栈的,但允许按照您的建议存储值。

此外,虚拟机非常小,因此很容易探索和移植它。

相关问题