谁选择了ARM堆栈方向?

时间:2013-09-28 18:07:53

标签: stack arm

this question所示,ARM堆栈的增长方向是可以选择的,但谁准确选择了这个方向?操作系统?该应用程序?制造商?

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

对于iOS,它似乎使用了向下扩展的堆栈(STMFD instructions here建议)。我怀疑Android和Windows RT也是如此,但我无法验证这一点。