Memory management 调用堆栈管理依赖于机器吗?

Memory management 调用堆栈管理依赖于机器吗?,memory-management,callstack,Memory Management,Callstack,我想我理解了堆栈内存的基本原理,但我仍然不完全理解管理堆栈的机制是什么——是编译器还是cpu体系结构?它依赖于编程语言吗 例如,我读到ARM中有减少函数调用中堆栈使用的趋势,因此函数的参数通常通过4个寄存器传递。然而,在我看来,这也可以使用其他cpu中的通用寄存器来实现。体系结构如何满足这种需求 在其他地方,我读到FORTRAN 77没有使用堆栈 还有一个问题是堆栈向上/向下增长。谁对此负责 总的来说,我想知道它是否依赖于cpu,它是如何强加的?否则,谁对这些决定负责 谢谢 它不能由处理器强制执

我想我理解了堆栈内存的基本原理,但我仍然不完全理解管理堆栈的机制是什么——是编译器还是cpu体系结构?它依赖于编程语言吗

例如,我读到ARM中有减少函数调用中堆栈使用的趋势,因此函数的参数通常通过4个寄存器传递。然而,在我看来,这也可以使用其他cpu中的通用寄存器来实现。体系结构如何满足这种需求

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

还有一个问题是堆栈向上/向下增长。谁对此负责

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


谢谢

它不能由处理器强制执行。调用约定是由编译器决定的,大多数编译器不会因为这样做而打破他们的语言标准

只要进程使用
push
/
pop
,堆栈的增长方向就由处理器决定。如果他们直接访问esp,他们应该遵循,但不要太多