与使用基于堆栈的虚拟机相比,使用基于寄存器的虚拟机到底有哪些优点和缺点?
对我来说,基于寄存器的机器似乎更容易编程并且更高效。那么为什么 JVM、CLR 和 Python VM 都是基于堆栈的呢?
在硬件中实现时,基于寄存器的机器将变得更加高效,因为对较慢 RAM 的访问较少。然而,在软件中,即使是基于寄存器的架构也很可能在 RAM 中拥有“寄存器”。在这种情况下,基于堆栈的机器将同样高效。
此外,基于堆栈的虚拟机将使编写编译器变得更加容易。您不必处理寄存器分配策略。本质上,您可以使用无限数量的寄存器。
Update:我在假设有一个解释的虚拟机的情况下写了这个答案。对于 JIT 编译的虚拟机来说,这可能不成立。我跑过这张纸 http://static.usenix.org/events/vee05/full_papers/p153-yunhe.pdf这似乎表明 JIT 编译的虚拟机使用寄存器架构可能会更有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)