处理器是否使用多个堆栈将调用堆栈与表达式/寄存器堆栈分开



我正在阅读一些关于处理器内存操作的基本文章,我对处理器如何处理接下来的事情感到困惑。

调用堆栈

的概念很清楚,但我想知道表达式堆栈/寄存器堆栈(用于进行计算)是否是相同的堆栈,或者即使程序中子例程(函数)的局部变量的堆栈是相同的调用堆栈。

如果有人能向我解释处理器如何在其堆栈上运行,那将对我有很大帮助。

我工作过的所有处理器都只使用了一个堆栈。

如果您考虑处理器在做什么,则只需要一个堆栈。 在计算过程中,您可以使用与调用堆栈相同的堆栈,因为当计算完成后,堆栈将再次"干净"。 局部变量也是如此,就在你超出局部变量的范围之前,你的堆栈将是干净的,允许调用正确返回。

只需设置 SS:SP 段和指针寄存器即可更改堆栈(只需保存当前值)过程调用参数和局部变量发生在堆栈中。动态创建的对象发生在堆 (DS:DI) 中。SS:SP 寄存器对按适当的字节数移动,以在过程调用中保留所需的内存。在返回时,SS:SP 将设置回呼叫前状态。

最新更新