【发布时间】:2012-11-20 17:52:18
【问题描述】:
我知道基于寄存器以及基于堆栈的虚拟机如何独立工作。我知道两者的优点和缺点。我想知道的是有没有人尝试过将两者合并?
我试图在网上搜索是否存在这样的虚拟机,但无济于事。我得到的最好结果是一篇关于混合虚拟机的文章 (HyVM)。如果确实为某种编程语言创建了这样的虚拟机,我将有兴趣查看其源代码以了解其工作原理。
也许有人可以指出我找到这样一个虚拟机的正确方向,或者将我链接到详细阐述该主题的文章或博客文章。
【问题讨论】:
-
非常有趣。你具体在找什么?您是否希望了解混合方法相对于严格基于寄存器的 VM 或基于堆栈的 VM 有什么优势?你的问题我不清楚。
-
我试图了解如何实现混合虚拟机。优点非常明显 - 您可以使用堆栈操作评估像
5 2 3 - +这样的表达式:push 5、push 2、push 3、sub、add;然后您可以使用store eax之类的指令将结果存储在寄存器中。这为您提供了两种类型的虚拟机的优势。整个程序会写成x = 5 2 3 - +,其中x是一个SSA 变量。我不清楚的是 VM 的内部结构——内存或处理器中的堆栈、堆栈评估成本等等。
标签: cpu-registers register-allocation vm-implementation ssa stack-based