历史上的今天
今天是:2025年04月03日(星期四)
2020年04月03日 | ARM程序异常返回操作
2020-04-03 来源:eefocus
异常的发生会导致程序正常运行的被打断, 并将控制流转移到相应的异常处理(异常响应),有些异常(fiq、irq)事件处理后,系统还希望能回 到当初异常发生时被打断的源程序断点处继续完成源程序的执行(异常返回),这就需要一种解决方案, 用于记录源程序的断点位置,以便正确的异常返回。
类似的还有子程序的调用和 返回。在主程序中(通过子程序调用指令)调用子程序时,也需要记录下主程序中的调用点位置,以便将来的子程序的返回。
在ARM处理器中使用 R14实现对断点和调用点的记录,即使用R14用作返 回连接寄存器(LR)。在硬件上和指令执行上,CPU 自动完成相应返回点的记录。在ARM 汇编语言程序设计时,R14和LR通用。
ARM处理器相应异常时,会自动完成将当前的PC保存到LR寄存器。
在处理异常中断响应过程中,保存中断的返回地址:
SUB LR,LR,#4 ,即将调用指令的下紧邻指令的地址保存到LR
ARM处理器执行子程序调用指令(BL )时,会自动完成将当前的PC的值减去4的结果数据保存到LR寄存器。即将调用指令的下紧邻指令的地址保存到LR。
ARM处理器针对不同的模式,共有6个链接寄存器资源(LR ),其中用户模式和系统模式共用一个 LR,每种异常模式都有各自专用的R14 寄存器(LR )。这些链接寄存器分别为 R14、R14_svc、R14_abt、R14_und、R14_irq、R14_fiq, 程序设计者要清晰处理器的模式与相应 寄存器的对应关系,都是使用 R14,但不同模式下的R14 不是同一个物理资源,其内容可能天壤之别。
R14 不用做链接寄存器(LR )时,也可以用做通用数据寄存器。
上一篇:ARM 软中断指令SWI
下一篇:ARM异常返回修正值
史海拾趣
|
请问以下C代码是什么意思?请问如下代码的含义:据说hook function 是钩子函数,但我并没有在网上搜索到类似的函说说明。不管能否解答都欢迎大家来讨论 typedef void (* PFN_HOOK )(void); &n ...… 查看全部问答> |
|
基于飞思卡尔ARM9内核的i.mx27嵌入式开发板在视频传输领域的应用 1.i.MX27产品特性和应用范围: i.MX27是高清视频首选,提供了更高的灵活性和更强大的多媒体处理能力,成为IP视频和语音(V2IP)无绳和移动电话、智能远程控制、POS终端和其他大量无线应用的理想选择。同时,i.MX27开发板的主频从i.MX21的 266MHZ提高 ...… 查看全部问答> |
|
版主,请教一个问题。我用的是STM8S103K3的片子,由于是第一次使用ST单片机,所以很多的地方不明白。我现在用TIM2 的第三通道来捕获一个脉冲信号,并要把脉冲宽度读出来。我按着数据手册上一步一步的做,结果还是没有出来,能在进入捕获中断, ...… 查看全部问答> |
|
在仿真时出错,下面是出错的问题,请高手指教 代码segment\'ram0\'BYTES.Roo ds.b 1.Ro1 ds.b 1.Ro2 ds.b 1.Ro3 ds.b 1.Ro4 ds.b 1.Ro5 ds.b 1.Ro6 ds.b 1.Ro7 ds.b 1.Ro8 ds.b 1MOV TIM1_SMCR,#00HBRES TIM1_ETR,#6MOV TIM1_PSCRH,#00HMOV TIM1_P ...… 查看全部问答> |
|
TFT LCD面板背光应用之TPS65142环路补偿设计考虑因素 作者:Tony Huang,德州仪器 (TI) 电源管理/现场应用摘要 TPS65142器件为笔记本电脑TFT LCD面板的偏置功率和WLED背光提供一种紧凑型解决方案。这种器件拥有一个升压转换器、一个正充电泵稳压器以及一个负充电泵稳压器,用于驱动源极驱动器和栅 ...… 查看全部问答> |




