gpt4 book ai didi

汇编语言 - 堆栈机

转载 作者:行者123 更新时间:2023-12-04 05:25:40 28 4
gpt4 key购买 nike

我正在业余时间学习汇编语言,以成为更好的开发人员。

我在概念层面上理解基于堆栈的机器和基于寄存器的机器之间的区别,但我想知道基于堆栈的机器实际上是如何实现的。如果是虚拟机,例如JVM 或 .NET,在基于寄存器的架构上运行,例如x86 或 x64,那么它必须在汇编级别使用寄存器(就我而言)。我显然在这里遗漏了一些东西。因此我不确定汇编语言的区别。

我已经阅读过这里的文章,例如Stack-based machine depends on a register-based machine?也在维基百科上,但我不相信他们会直接回答我的问题。

最佳答案

then it must use registers at the assembly level



这不是必需的,处理器有一个 cpu 堆栈,它的行为很像中间语言中的虚拟堆栈。您几乎可以将指令一对一地翻译成 CPU 指令。当然,基于堆栈的 VM 很受欢迎的原因之一是抖动很容易实现。

这样做的唯一问题是机器代码效率不高。抖动优化器的工作是找到有效使用 cpu 寄存器的方法,并以这种方式使代码更快。

相反的问题存在于基于寄存器的 VM 中。这是一个更难解决的问题,因为真正的 CPU 没有虚拟机那么多的寄存器。所以抖动必须想办法使用堆栈来溢出硬件不提供的寄存器。

关于汇编语言 - 堆栈机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9801648/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com