7

正如在这个问题中看到的中看到的,ARM 堆栈增长方向是可选择的,但谁选择了这个方向呢?操作系统?应用程序?生产厂家?

如果是操作系统,iOS、Android 和 Windows RT 的堆栈方向是什么?

4

1 回答 1

3

最终,选择堆栈增长方向的是操作系统的设计者。

如果您想创建自己的堆栈,而不是依赖操作系统给您的堆栈,您可以使用您选择的任何类型的堆栈。但是,如果你想使用操作系统堆栈,你别无选择,只能接受操作系统给你的东西。

第一个在 ARM 上运行的操作系统是由 Acorn Computers 编写的 Arthur。Arthur 使用向下增长的堆栈,很可能是因为编写 Arthur 的开发人员已经习惯了 6502 上的堆栈,该堆栈也是向下增长的。(Arthur 并没有持续多久,很快就被 RISC OS 取代。)

有一个在 Acorn 硬件上运行的 ARM Linux 版本——我在 1995 年的 Acorn Risc PC 上仍然有一个版本。我知道那个版本的 ARM Linux 内核会出于各种目的调用 RISC OS,因此它也必须使用向下增长的堆栈。其他操作系统开发人员很可能效仿了 Acorn 和/或 ARMLinux 开发人员的做法。

至于 iOS,它似乎使用了一个向下增长的堆栈(STMFD这里的说明建议这样做)。我怀疑 Android 和 Windows RT 也是如此,但我无法验证这一点。

于 2013-09-28T22:16:06.520 回答