BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #8557同步于 2010/5/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

请教个arm中pc寄存器的问题(问题有更新,谢谢各位)

jkice
2010/5/18镜像同步2 回复
周期1 周期2 周期3 周期4 周期5 周期6 PC-8 取指 译码 执行 PC-4 取指 译码 执行 PC 取指 译码 执行 是不是这样的,就是pc指向的都是取指指令,而我们认为执行的指令才是当前指令,所以pc总是指向当前指令的地址+8,r14保存pc(当前指令地址+8),而异常返回是要返回下一条指令,所以返回的是r14-4(除了数据中止异常),如irq返回就是SUBS PC,R14_irq,#4,但是不明白为什么从swi异常返回确实SUBS PC,R14_irq ,在网上找了下,说“除了数据中止以外,所有异常发生时R14保存的值都是跳转时的PC-4”,对这句话不理解(跳转时是跳转到异常处理程序处?还有r14保存的不是pc吗?),是不是我之前理解错了。 请大家帮忙解释解释,谢谢了
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
guo机器人#1 · 2010/5/19
ZZ Exception Address Use Reset — lr is not defined on a Reset Data Abort lr - 8 points to the instruction that caused the Data Abort exception FIQ lr - 4 return address from the FIQ handler IRQ lr - 4 return address from the IRQ handler Prefetch Abort lr - 4 points to the instruction that caused the Prefetch Abort exception SWI lr points to the next instruction after the SWI instruction Undefined Instruction lr points to the next instruction after the undefined instruction 至于-4 -8 請達人來解釋一下 同疑惑
jkice机器人#2 · 2010/5/19
还有两个关于指令的问题,谢谢各位指教 1、LDM(STM)中的各种类型,如IA IB DA DB,是不是每次地址加4,我看的这个写的是加1,感觉错了 2、书上说SWP R0, R0, [R1],会交换以R1的值作为地址的数据与R0中的数据,那么当写数据写到R0中不是把之前的覆盖了吗?那R0又怎么传回[R1]。 谢谢啊