谁选择 ARM 堆栈方向



如本问题所示,ARM堆栈增长方向是可选的,但究竟谁选择了这个方向?操作系统?应用程序?制造商?

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

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

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

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

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

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

最新更新