【问题标题】:How would a register + stack based virtual machine work?基于寄存器+堆栈的虚拟机如何工作?
【发布时间】:2012-11-20 17:52:18
【问题描述】:

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

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

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

【问题讨论】:

  • 非常有趣。你具体在找什么?您是否希望了解混合方法相对于严格基于寄存器的 VM 或基于堆栈的 VM 有什么优势?你的问题我不清楚。
  • 我试图了解如何实现混合虚拟机。优点非常明显 - 您可以使用堆栈操作评估像 5 2 3 - + 这样的表达式:push 5push 2push 3subadd;然后您可以使用store eax 之类的指令将结果存储在寄存器中。这为您提供了两种类型的虚拟机的优势。整个程序会写成x = 5 2 3 - +,其中x 是一个SSA 变量。我不清楚的是 VM 的内部结构——内存或处理器中的堆栈、堆栈评估成本等等。

标签: cpu-registers register-allocation vm-implementation ssa stack-based


【解决方案1】:

看看Forth。它使用虚拟机,主要面向堆栈,但几乎可以按照您建议的方式存储值。

此外,VM 很小,因此很容易探索和移植。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2014-05-18
    • 2013-06-30
    • 2021-06-20
    • 1970-01-01
    相关资源
    最近更新 更多