历史上的今天
返回首页

历史上的今天

今天是:2024年10月05日(星期六)

正在发生

2018年10月05日 | ARM中PC和LR的关系

2018-10-05 来源:eefocus

我们常常听说的PC,LR到底是什么关系,我这次终于弄明白了。我们都知道,LR是指向PC下一次要执行的地址,但是ARM不同的工作模式,他们有不同的关系。ARM有如下几种工作模式:用户模式,FIQ模式,IRQ模式,系统模式,终止模式,数据访问终止模式,未定义模式。ARM是三级流水线的:取指,译码,执行。ARM的R15(PC)总是指向取指的地方,而我们总是以执行作为分析参考点,注意,取指的地方在高地址。当ARM处在ARM指令的时候,每条指令得长度为4,PC = 当前执行+8,当然如果处在THUMB指令中,每条指令长度为2,PC = 当前执行+4.

 

ARM中PC和LR的关系


   当程序发生函数调用的时候,LR里面存放的时候函数返回的地址。当发生中断的时候,不同模式如下:

(1)       SWI和未定义中断

此时PC指针的地址还没有更新,所以LR的内容为PC-4。

指令地址:

A     PC-8

A+4   PC-4     ;LR

A+8   PC       ;PC

    当发生中断的时候,直接返回A(PC-8)的下一条指令(PC-4)就可以了,所以在执行的时候,直接把LR给PC就行了。说白了,就是在发生这两种异常的时候,PC指针没有更新,仍然等于A+8,还是原来的数值,在返回的时候,直接在LR处执行就可以了。

      返回指令:MOV  PC,LR

(2)FIQ和IRQ中断

    在这两种中断中,中断总是在执行完一条指令后开始执行,但这时候PC发生了更新,也就是说PC数值一定不是A+8 了,变成了A+12了,那么相应的LR也变成了A+8(PC-4)。

,如果返回,那么在LR(A+8)处开始执行,这样就跳过了A+4这个地址,少执行了一个指令。所以发生这两种中断的时候,应该返回LR -4。

         中断前:

A        PC -8

A+4      PC -4                ;LR

A+8      PC                    ;PC

中断后:

A        PC-12      此处中断

A+4      PC-8       ;跳过未执行

A+8      PC-4                 ;LR

A+12     PC         ;已更新

    说明白点,比如CPU在执行执行D的时候发生中断,在没有执行完 D指令前是不会处理中断的 ,执行完之后,PC已经更新,然后将PC-4的数值给LR,这个有系统决定,软件无法修改。即A+8。在中断 返回时, 应该执行没有执行的下一条指令,即A+4,所以在返回的时候,将LR-4,所以返回的时候PC= LR-4.返回指令为:SUB PC,LR,#4

(3) 指令中止模式中断

    此种模式的中断发生时,PC不会更新,但是会在发生中断的地方重新执行,因为 CPU执行指令的时候被打断,这个指令可能就没执行完或者还没执行,一定要重新执行该指令才行 。

指令模式:

A      PC-8     ;此处发生指令中止中断

A+4    PC-4     ;LR

A+8    PC       ;

   所以,发生中断时,PC未更新,即PC = A+8,此时LR = PC-4,即A+4,因为要从被中断指令处重新执行,即从A处重新执行,所以返回LR-4,返回指令:SUB   PC, LR, #4

(4)数据访问中止模式中断

   此种中断模式,是在数据访问的时候发生中止,所以要像指令中止一样,从此处重新执行,但是不同的是,此时的PC已经更新,不是A+8了,而是变成A+12了,与上面情况类似,LR的数值为 PC-4,即A+8,所以要返回被中断的指令处执行,必须返回LR-8,返回指令为:

SUB   PC,  LR,  #8.

   小结:总之,能够引起PC发生更新的只有数据访问中止和FIQ和IRQ,其他都不会引起PC更新,但是不同的工作模式下,中断返回执行的地址不一样,这一点 要注意。


推荐阅读

史海拾趣

中微股份(Cmsemicon)公司的发展小趣事

作为一家以技术创新为核心竞争力的企业,中微股份(Cmsemicon)始终坚持以市场需求为导向,持续推动技术创新和产品升级。近年来,公司在刻蚀设备领域取得了一系列重要突破,包括成功研制出针对先进逻辑和存储器件制造中关键刻蚀工艺的高端产品等。这些技术成果不仅提升了公司的核心竞争力,也为行业的发展做出了积极贡献。

Alliance Fiber Optics Products Inc公司的发展小趣事

随着技术的不断进步,AFOP在光纤元件领域取得了重大突破。公司成功研发出一系列高品质的光纤元件和集成模块,如波分复用光电二极管、光衰减器等,这些产品在光网通信领域具有广泛的应用。同时,AFOP还注重产品升级和迭代,根据市场需求和客户反馈,不断优化产品性能和质量,赢得了客户的广泛认可。

台湾稳态公司的发展小趣事

在电子行业中,技术创新是企业保持竞争力的关键。台湾稳态公司始终坚持以创新为核心的发展理念,不断投入研发资源,推动产品创新和技术升级。通过持续的创新努力,稳态公司成功开发出了多款具有行业领先水平的新产品,引领了行业潮流,也为公司的持续发展注入了新的动力。

Advanced Components Industries Inc公司的发展小趣事

在国内市场取得一定成绩后,ACI开始寻求国际合作,以进一步拓宽市场。公司与国际知名电子企业建立了战略合作关系,共同研发新产品,开拓新市场。这些合作不仅提升了ACI的技术水平,还为其带来了更多的国际订单。

通过国际合作,ACI的产品逐渐进入国际市场,公司的影响力不断扩大。同时,ACI也积极参与国际电子行业的交流活动,与同行分享经验,学习先进技术,不断提升自身实力。

Fibrefab Limited公司的发展小趣事

面对全球环境问题日益严峻的现状,Fibrefab积极响应环保号召,推动绿色生产和可持续发展。公司采用环保材料和生产工艺,降低产品生产和使用过程中的能耗和排放。同时,Fibrefab还积极参与环保公益活动和社会责任项目,为保护环境贡献自己的力量。这一举措不仅提升了Fibrefab的企业形象和社会责任感,也为其长期发展奠定了坚实基础。

ARBOR公司的发展小趣事

随着环保意识的日益增强,ARBOR公司积极响应国家号召,致力于绿色电子产品的研发和生产。公司投入大量资金研发环保材料和技术,成功推出了一系列绿色电子产品。这些产品不仅具有优异的性能,还符合环保标准,得到了消费者的广泛认可。ARBOR公司的绿色环保理念也为整个电子行业树立了榜样。

问答坊 | AI 解惑

求救:如何将SST 89E564RD (40-c-p1 0438064-AC)变成仿真器

买了块廉价的芯片,想自己做仿真器 里面没有启动程序 想自己DIY一个仿真器 麻烦成功的大虾发一个可以用的    1电路图    2软件    3监控程序 4 其他对SST 89E564RD  用的上 [ 本帖最后由 wanzsxit ...…

查看全部问答>

2009年竞赛学生守则].doc

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 2009年竞赛学生守则].doc  …

查看全部问答>

再次请教S3C2440+WinCE5.0+4.2BSP下使用4GB的SDHC大容量SD卡驱动问题,大家指点

再次请教S3C2440+WinCE5.0+4.2BSP下使用4GB的SDHC大容量SD卡驱动问题,大家指点!!! 大家好,谢谢大家一直以来这么热心的回复的我帖子,帮助我,谢谢大家,祝大家工作顺利! 我的环境:S3C2440+WinCE5.0+4.2BSP,开发板是广嵌科技的GEC2440。 ...…

查看全部问答>

nrf905通过匹配网络连接50欧姆单端天线问题

现在用nrf905设计开发一个射频智能卡测试平台的无线接口,为增强实验的可靠性,我们在设计了PCB环形差分天线的前提下,通过两个跳线,将芯片的ANT1和ANT2通过匹配网络再连接到SMA天线接口处,以备PCB环形天线不能满足实验要求时,可以经过跳线连接 ...…

查看全部问答>

在eMbedded Visual C++中使用VC++编写的.dll的问题

我最近做个项目,在手机上显示监控图像。在eMbedded Visual C++中使用VC下的Dll出错。 提示如下: error LNK2019: unresolved external symbol __imp__MP4_ClientStopCapture referenced in function \"protected: void __thiscall CKlsDlgDlg::On ...…

查看全部问答>

在ADC下面或附近数模一点共地有什么区别

datasheet上是说应该在下面一点共地,但是如果在附近引出来用0欧电阻接可能产生什么问题,还查到有说,用磁珠相连有选频的好处,这个“选频”怎么讲?是指可以把数字区指定频率的噪声滤掉吗?数字区的噪声频率是不是就是单片机的频率啊?谢谢指教 ...…

查看全部问答>

i2c是什么玩意?

在网上看了好多i2c的资料  但感觉还是云里雾里的  不明白怎么用?求大虾指点!…

查看全部问答>

神器!Launchpad游戏扩展板

这是继MSP430的MP3扩展板(DSP C5000)后的又一个华丽的扩展板。 说说功能吧!扩展板提供一路VGA输出,VGA的DA采用电阻分压的方式,分辨率为400×300,并且支持两个任天堂的游戏手柄, 打游戏嘛!手柄肯定不能少。主芯片是一片Spartan 3的FPGA ...…

查看全部问答>

画PCB用哪个软件好?

求教各位大神,尤其是已经工作的,在公司做项目画PCB一般是用哪个软件呢?…

查看全部问答>

有符号数的整数乘法演算问题。。。

在网上看到了这样一份有符号整数乘法的演算,请问哪位能解释下。。。。 为什么这里的加法与我们的平时的不一样的,应该怎样理解。。。…

查看全部问答>