ARM裸机程序开发17(堆栈寻址)

堆栈是一种数据结构,按先进后出的方式工作。使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶

当堆栈指针指向最后压入堆栈的数据时,称为满堆栈,而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈

 

同时又根据堆栈的生成方式,又可分为递增堆栈和递减堆栈,当堆栈由低地址像高地址生成时,称为递增堆栈。当堆栈由高地址向低地址生成时,称为递减堆栈。这样就有4中堆栈的工作方式。

◎ Full descending 满递减堆栈——FD 堆栈首部是高地址,堆栈向低地址增长。栈指针总是指向堆栈最后一个元素(最后一个元素是最后压入的数据)。 ARM-Thumb过程调用标准和ARM、Thumb C/C++ 编译器总是使用Full descending 类型堆栈。

 ◎ Full ascending 满递增堆栈——FA 堆栈首部是低地址,堆栈向高地址增长。栈指针总是指向堆栈最后一个元素(最后一个元素是最后压入的数据)。

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

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

 

在ARM中,一般是满堆栈,堆栈生长方向是从上向下递减的(51相反为递增),在操作系统的一直过程中,与CPU相关部分的一直肯定会涉及到堆栈生长方向的定义。

  arm堆栈的组织结构是 满栈降 的形式,满栈即sp是要停留在最后一个进栈元素,降:就是堆栈的增长方向是从高地址向低地址发展

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值