处理器是否使用多个堆栈将调用堆栈与 expression/register 堆栈分开?

Does the processor use more than one stack to separate the call stack from the expression/register stack?

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

调用栈的概念很清楚,但是我想知道表达式stack/register栈(用来做计算)是同一个栈,还是一个局部变量的栈程序中的子例程(函数)是相同的调用堆栈。

如果有人能向我解释处理器如何就其堆栈进行操作,那将对我有很大帮助。

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

我使用过的所有处理器都只为这些使用了一个堆栈。

如果你想想处理器在做什么,你只需要一个堆栈。在计算期间,您可以使用与调用堆栈相同的堆栈,因为当计算完成时,堆栈将再次 'clean'。对于局部变量也是如此,就在您离开局部变量的范围之前,您的堆栈将是干净的,从而可以正确调用 return。