分析下表中不同的异常返回指令偏移不同的原因。 异常或入口 返回指令 返回地址 未定义的指令 MOVS PC,R14_und R14 预取指中止 SUBS PC,R14_abt,#4 R14-4 中断 SUBS PC,R14_irq,#4 R14-4 数据中止 SUBS PC,R14_abt,#8 R14-8
时间: 2024-02-26 22:52:48 浏览: 89
异常返回指令偏移的不同是由于不同的异常处理程序返回地址不同所致。
对于未定义的指令异常和预取指中止异常,异常返回指令是 MOVS PC, R14_und 和 SUBS PC, R14_abt, #4,返回地址分别是 R14 和 R14-4。这是因为在处理这两种异常时,返回到异常发生的下一条指令处,即 R14 所指向的地址或者 R14-4 所指向的地址。
对于中断异常和数据中止异常,异常返回指令是 SUBS PC, R14_irq, #4 和 SUBS PC, R14_abt, #8,返回地址分别是 R14-4 和 R14-8。这是因为在处理这两种异常时,需要保存当前指令的地址,返回到当前指令的下一条指令处,即 R14-4 或者 R14-8 所指向的地址。
因此,不同异常处理程序需要保存不同的返回地址,导致了异常返回指令偏移的不同。
阅读全文