【问题标题】:Call stack management is machine dependent?调用堆栈管理依赖于机器?
【发布时间】:2012-12-15 11:20:40
【问题描述】:

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

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

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

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

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

谢谢。

【问题讨论】:

    标签: memory-management callstack


    【解决方案1】:

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

    栈的增长方向由处理器决定,只要进程使用push/pop之类的东西。如果他们直接访问esp,他们应该关注,但不要关注。

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 2017-09-30
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多