【发布时间】:2012-04-05 19:06:53
【问题描述】:
我在业余时间学习汇编语言以成为更好的开发人员。
我在概念层面理解基于堆栈的机器和基于寄存器的机器之间的区别,但我想知道基于堆栈的机器实际上是如何实现的。如果是虚拟机,例如JVM 或 .NET,在基于寄存器的架构上运行,例如x86 或 x64,那么它必须在程序集级别使用寄存器(就我而言)。我显然在这里遗漏了一些东西。因此我不确定汇编语言的区别。
我在这里阅读过文章,例如Stack-based machine depends on a register-based machine? 和维基百科,但我不相信他们会直接回答我的问题。
【问题讨论】:
-
他们可以在软件中模拟它,旧版 JVM 就是这样做的。通常,尽管堆栈机器代码被编译为本机代码(无论可能是什么架构)。堆栈机器代码很好,因为它具有简洁的编码,很容易从 AST 生成并且相对容易分析。