ARM技术论坛
直播中

丁冬芹

7年用户 1295经验值
私信 关注
[问答]

在SWI软中断指令中LR中放的是异常模式下的返回地址求解

请问:在 SWI 软中断指令中,LR 中放的是异常模式下的返回地址,而这个地址的低 8 位和低 24 位分别是 thumb 和 ARM指令下的立即数,这种对应的关系是如何来的 还有执行 THUMB 和 ARM 指令,LR 中放的地址最后的位应是 0 和 00,那么为什么会有swi 01;swi 03 这样的立即数呢

回帖(2)

郝埃连

2023-2-27 10:16:42
理解不对,可以去看一看 os_cpu_s.s 这个文件
举报

孙成红

2023-2-27 10:16:56
软中断异常与指令未定义异常一样,也是当前指令在执行过程中就产生了异常,所以LR中保存的返回地址是当前软中断指令的下一条指令的地址,不需要人为的去修正,返回时直接将LR的值赋给PC即可。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分