使用基于寄存器的虚拟机与使用基于堆栈的虚拟机有什么优缺点?
对我而言,基于寄存器的机器似乎更直接的编程和更高效.那么为什么JVM,CLR和Python VM都是基于堆栈的呢?
从http://code.google.com/p/unladen-swallow/wiki/ProjectPlan我引用:
"使用JIT还可以让我们将Python从基于堆栈的机器移动到注册机器,这已被证明可以提高其他类似语言的性能(Ierusalimschy等,2005; Shi等,2005)."
在大学里,我为一个带有递归过程的语言构建了一个简单的编译器 - 它为每个被调用的过程维护堆栈帧 - 这样就可以递归调用它们,这样参数和返回值就可以工作....
2件事:
1)考虑到上面引用中使用的术语,我是否正确地认为我实施的内容将被视为"基于堆栈的机器"?
2)如果我在第(1)点的假设是正确的,那么"注册机器"如何工作?即它与基于堆栈的机器有何不同?
谢谢!
python language-theory language-design language-implementation