历史上的今天
返回首页

历史上的今天

今天是:2025年03月29日(星期六)

2020年03月29日 | 3.堆栈指针寄存器 SP 详解

2020-03-29 来源:eefocus

堆栈是一种具有“后进先出”(LIFO---Last In First Out)特殊访问属性的存储结构。堆栈一般使用RAM 物理资源作为存储体,再加上LIFO 访问接口实现。

堆栈指针寄存器 <wbr>SP <wbr>详解

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


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


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

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

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

ARM处理器的堆栈操作具有非常大的灵活性,对这四种类型的堆栈都支持。

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


8种后缀

  • ia(increase after)先传输,再地址+4

  • ib(increase before)先地址+4,再传输

  • da(decrease after)先传输,再地址-4

  • db(decrease before)先地址-4,再传输

  • fd(full decrease)满递减堆栈

  • ed(empty decrease)空递减堆栈

  • fa(·······) 满递增堆栈

  • ea(·······)空递增堆栈


四种栈

空栈:栈指针指向空位,每次存入时可以直接存入然后栈指针移动一格;而取出时需要先移动一格才能取出


满栈:栈指针指向栈中最后一格数据,每次存入时需要先移动栈指针一格再存入;取出时可以直接取出,然后再移动栈指针


增栈:栈指针移动时向地址增加的方向移动的栈


减栈:栈指针移动时向地址减小的方向移动的栈


//设置栈,准备后面的lowlevel_init的使用

ldr sp, =0xd0036000 /* end of sram dedicated to u-boot */

sub sp, sp, #12 /* set stack */

mov fp, #0

推荐阅读

史海拾趣

永丰盈(CST)公司的发展小趣事

深圳市永丰盈电子有限公司(CST)成立于2003年,初始阶段,公司只有几名员工和几台设备,专注于电子接插件产品的生产与销售。在创始人坚定的信念和团队不懈的努力下,CST逐步在市场上崭露头角。公司秉持“诚信、踏实、齐心、努力”的经营理念,通过严格的质量控制和持续的技术创新,赢得了客户的信任。

Denyo Europa Gmbh公司的发展小趣事

Denyo Europa Gmbh公司在电子行业中崭露头角,始于一次技术创新的突破。公司研发团队经过数年的努力,成功开发出一种新型高效能电池技术,这种电池不仅容量大,而且充电速度快,安全性能高。这一技术的推出,迅速赢得了市场的认可,也为公司带来了可观的收益。公司因此逐渐在电子行业中建立了自己的技术领先地位。

Carling Technologies公司的发展小趣事

Carling Technologies于1920年创立,早期专注于电气和电子开关以及组件的制造。凭借创始人的远见卓识和团队的努力,公司逐渐在行业中崭露头角。在创立初期,Carling Technologies就以其高质量的产品和创新的设计赢得了客户的信赖。通过不断的研发和技术升级,公司逐渐在电气和电子开关领域建立了自己的地位。

Fine Products Microelectronics Corp公司的发展小趣事

随着技术的不断进步和市场需求的多样化,Carling Technologies开始扩展其产品线,涵盖了液压磁热断路器、电子控制以及配电装置等多个领域。同时,公司也积极开拓全球市场,通过设立海外办事处和与当地企业合作,将产品销往世界各地。这一阶段的发展使得Carling Technologies成为了全球电气和电子开关领域的领先制造商之一。

AMSCO [Austria micro systems AG]公司的发展小趣事

随着技术的不断进步和市场需求的多样化,Carling Technologies开始扩展其产品线,涵盖了液压磁热断路器、电子控制以及配电装置等多个领域。同时,公司也积极开拓全球市场,通过设立海外办事处和与当地企业合作,将产品销往世界各地。这一阶段的发展使得Carling Technologies成为了全球电气和电子开关领域的领先制造商之一。

亿宝科技(CNIBAO)公司的发展小趣事

亿宝科技在成立初期,就明确了以技术创新为核心的发展战略。公司创始人带领研发团队,深入研究市场需求,不断推出具有竞争力的电子产品。在一次偶然的机会中,他们成功研发出一款具有高性能、低功耗特点的芯片,这一创新技术迅速获得了市场的认可。此后,亿宝科技不断加大研发投入,形成了一套完整的自主研发体系,为公司后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

电子工程师必上的十大专业网站

电子工程师必上的十大专业网站 在电子产业混,情报能力是相当重要的,具体体现在一要能及早全面地获得最新的设计资讯,二要能认识一些专家级的大虾,当有设计难题时,这些大虾可以伸出热情的手拉你一把,则对你的设计会帮助很大的。小可我在电子产 ...…

查看全部问答>

wince Group Box里面的Button控件不响应消息函数?

平台:vs2005 wince5.0 MFC智能设备应用程序。 我在Dialog上添加一个GroupBox(m_cgbpicture),然后在GroupBox上添加一Button,可程序运行后Button(ctxttvbright)跟GroupBox并没有自动关联, 于是我在OnInitDialog()中用m_ctxttvbright.SetPar ...…

查看全部问答>

关于掉电后保存桌面的问题

wince5,已经实现了hive,但是掉电后桌面上的东西还是不能保存,请问一下能不能实现把桌面啦开始菜单啦这些东西也放在nand里面?…

查看全部问答>

PADS2005教程

希望能有帮助…

查看全部问答>

USB Unicode 字符串描述符生成器

  关于字符串描述符     字符串描述符是一种可选的USB标准描述符,描述了如制商、设备名称或序列号等信息。如果一个设备无字符串描述符,则其它描述符中与字符串有关的索引值都必须为0。字符串使用的是Unicode编码。     ...…

查看全部问答>

求助: 大侠帮忙拉!!急需压力传感器

    本人由于设计需要,急需一款压力传感器, 最好是圆柱形, 直径大约在70mm左右,厚度在10mm左右。      万分感谢!!…

查看全部问答>

谁有zigbee无线网络定位方法的代码

毕业论文是无线传感器网络定位系统,…

查看全部问答>

M4:基于“在LCD上倾角变化的显示界面”学习心得

上周考试,没时间把我的那篇“在LCD上倾角变化的显示界面” https://bbs.eeworld.com.cn/viewthread.php?tid=330464 的学习心得写出来,现在补上!我觉得我这个程序使用最多的就是Ti图形库的画布控件(Canvas)和图形按钮控件(Image Button), ...…

查看全部问答>