3、请分析下表中不同的异常返回指令偏移不同的原因。 异常或入口 返回指令 返回地址 未定义的指令 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-03-07 21:51:28 浏览: 138
异常中断返回的几种情况
在ARM体系结构中,异常处理分为两种:中断(Interrupt)和异常(Exception)。其中,中断是由外部设备触发的异步事件,而异常是由指令执行引起的同步事件。
在ARM处理器执行异常处理程序时,需要从异常模式(Exception Mode)返回到原来的执行模式。为了实现这一过程,需要使用异常返回指令(Exception Return Instruction)将程序计数器(PC)置为返回地址。不同的异常或入口对应不同的异常返回指令和返回地址,具体如下:
1. 未定义的指令异常(Undefined Instruction Exception):当ARM处理器遇到未定义的指令时,会触发该异常。在异常处理程序中,需要使用MOVS PC,R14_und指令将PC置为R14_und的值,返回地址为R14。
2. 预取指中止异常(Prefetch Abort Exception):当ARM处理器无法从内存中预取指令时,会触发该异常。在异常处理程序中,需要使用SUBS PC,R14_abt,#4指令将PC置为R14_abt-4的值,返回地址为R14-4。
3. 中断异常(Interrupt Exception):当外部设备触发中断时,会触发该异常。在异常处理程序中,需要使用SUBS PC,R14_irq,#4指令将PC置为R14_irq-4的值,返回地址为R14-4。
4. 数据中止异常(Data Abort Exception):当ARM处理器无法从内存中读取或写入数据时,会触发该异常。在异常处理程序中,需要使用SUBS PC,R14_abt,#8指令将PC置为R14_abt-8的值,返回地址为R14-8。
因为不同的异常或入口对应不同的异常返回指令和返回地址,所以偏移量也不相同。
阅读全文