ARM的堆栈方式

Posted 一代枭雄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARM的堆栈方式相关的知识,希望对你有一定的参考价值。

当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack);

当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack);

根据对战的生成方式分为:递增堆栈(Ascengding Stack)和递减堆栈(Decending Stack)

递增堆栈:堆栈由低地址向高地址生成

递减堆栈:堆栈由高地址向低地址生成

从而形成了四种类型的堆栈工作方式,ARM处理器支持这四种类型的堆栈工作方式。

满递减堆栈(Full decending)-FD   :堆栈首部是高地址,堆栈向低地址增长。栈指针总是指向最后一个元素。注意,最后一个元素是最后压入的数据。

空递减堆栈(Empty descending)---ED:堆栈首部是高地址,堆栈向低地址增长。栈指针总是指向下一个将要放入数据的空位置。

满递增堆栈(Full ascending)---FA 堆栈首部是低地址,堆栈向高地址增长。栈指针总是指向堆栈最后一个元素。

空递增堆栈(Empty ascending)-EA 堆栈首部指向低地址,堆栈向高地址增长。栈指针总是指向下一个将要放入数据的空位置。

 

以上是关于ARM的堆栈方式的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核 ARM 异常堆栈初始化

我在理解 ARM Assembly 中的 ED 堆栈时遇到问题

如何展开ARM Cortex M3堆栈

如何解决 ARM Coprtex 上的嵌入式系统编程中的堆栈损坏错误

ARM处理器的堆栈和函数调用,以及与Sparc的比较

ARM处理器基础Cortex-M4