调用堆栈管理依赖于机器



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

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

我在别处读到,在FORTRAN 77中没有使用堆栈。

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

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

谢谢。

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

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

相关内容

  • 没有找到相关文章

最新更新