堆栈指针寄存器 SP 详解.doc

堆栈指针寄存器 SP 详解.doc

ID:57751397

大小:38.50 KB

页数:1页

时间:2020-09-02

堆栈指针寄存器 SP 详解.doc_第1页
资源描述:

《堆栈指针寄存器 SP 详解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、堆栈是一种具有“后进先出”(LIFO---LastInFirstOut)特殊访问属性的存储结构。堆栈一般使用RAM物理资源作为存储体,再加上LIFO访问接口实现。    堆栈的实现方法:    在随机存储器区划出一块区域作为堆栈区,数据可以一个个顺序地存入(压入)到这个区域之中,这个过程称为‘压栈’(push)。通常用一个指针(堆栈指针SP---Stack  Pointer)实现做一次调整,SP  总指向最后一个压入堆栈的数据所在的数据单元(栈顶)。从堆栈中读取数据时,按照堆栈指针指向的堆栈单元读取堆栈数据,这个过程叫做

2、‘弹出’(pop),每弹出一个数据,SP即向相反方向做一次调整,如此就实现了后进先出的原则。    堆栈是计算机中广泛应用的技术,基于堆栈具有的数据进出LIFO特性,常应用于保存中断断点、保存子程序调用返回点、保存CPU现场数据等,也用于程序间传递参数。    ARM处理器中通常将寄存器R13作为堆栈指针(SP)。ARM处理器针对不同的模式,共有6个堆栈指针(SP),其中用户模式和系统模式共用一个SP,每种异常模式都有各自专用的R13寄存器(SP)。它们通常指向各模式所对应的专用堆栈,也就是ARM处理器允许用户程序有六个

3、不同的堆栈空间。这些堆栈指针分别为R13、R13_svc、R13_abt、R13_und、R13_irq、R13_fiq,如表2-3    堆栈指针寄存器所示。     为了更准确地描述堆栈,根据“压栈”操作时堆栈指针的增减方向,将堆栈区分为‘递增堆栈’(SP向大数值方向变化)和‘递减堆栈’(SP向小数值方向变化);又根据SP指针指向的存储单元是否含有堆栈数据,又将堆栈区分为‘满堆栈’(SP指向单元含有堆栈有效数据)和‘空堆栈’(SP指向单元不含有堆栈有效数据)。    这样两两组合共有四种堆栈方式——满递增、空递增、满

4、递减和空递减。     ARM处理器的堆栈操作具有非常大的灵活性,对这四种类型的堆栈都支持。    ARM处理器中的R13被用作SP。当不使用堆栈时,R13也可以用做通用数据寄存器。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。