搜索
当前位置: sk彩票 > 堆栈 >

堆栈指针寄存器 SP 详解

gecimao 发表于 2019-05-14 14:58 | 查看: | 回复:

  区划出一块区域作为堆栈区,数据可以一个个顺序地存入(压入)到这个区域之中,这个过程称为压栈(push )。通常用一个指针(总指向最后一个压入堆栈的数据所在的数据单元(栈顶)。从堆栈中读取数据时,按照堆栈 指针指向的堆栈单元读取堆栈数据,这个过程叫做 弹出(pop ),每弹出一个数据,SP 即向相反方向做一次调整,如此就实现了后进先出的原则。

  堆栈是计算机中广泛应用的技术,基于堆栈具有的数据进出LIFO特性,常应用于保存中断断点、保存子程序调用返回点、保存CPU现场数据等,也用于程序间传递参数。

  R13作为堆栈指针(SP)。ARM处理器针对不同的模式,共有 6 个堆栈指针(SP),其中用户模式和系统模式共用一个SP,每种异常模式都有各自专用的R13寄存器(SP)。它们通常指向各模式所对应的专用堆栈,也就是ARM处理器允许用户程序有六个不同的堆栈空间。这些堆栈指针分别为R13、R13_svc、R13_abt、R13_und、R13_irq、R13_fiq,如表2-3

  为了更准确地描述堆栈,根据“压栈”操作时堆栈指针的增减方向,将堆栈区分为递增堆栈(SP 向大数值方向变化)和递减堆栈(SP 向小数值方向变化);又根据SP 指针指向的存储单元是否含有堆栈数据,又将堆栈区分为满堆栈(SP 指向单元含有堆栈有效数据)和空堆栈(SP 指向单元不含有堆栈有效数据)。

  这样两两组合共有四种堆栈方式满递增、空递增、满递减和空递减。

  ARM处理器中的R13被用作SP。当不使用堆栈时,R13 也可以用做通用数据寄存器。

本文链接:http://moodyjews.net/duizhan/390.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部