0

我想我了解堆栈内存的基本知识,但我仍然不完全了解负责管理堆栈方式的机制 - 是编译器,cpu架构?它依赖于编程语言吗?

例如,我读到 ARM 在函数调用中倾向于减少堆栈的使用,因此函数的参数通常通过 4 个寄存器传递。但是,在我看来,这也可以使用其他 cpu 中的通用寄存器来实现。架构如何强加这种需求?

在其他地方,我读到在 FORTRAN 77 中没有使用堆栈。

还有堆栈向上/向下增长的问题。谁负责?

总的来说,我想知道它是否依赖于 cpu 以及它是如何强加的?否则谁对这些决定负责?

谢谢。

4

1 回答 1

0

它不能由处理器强加。调用约定由编译器决定,大多数编译器不会仅仅为了这样做就破坏他们的语言标准。

只要进程使用push/之类的东西,堆栈的增长方向就由处理器确定pop。如果他们esp直接访问,他们应该跟随,但不要也有。

于 2012-12-31T15:26:10.033 回答