ARM7 响应异常处理时的断点返回地址计算
来源:互联网 发布:房地产开发与管理 知乎 编辑:程序博客网 时间:2024/05/17 22:33
ARM处理器对异常的响应过程可用伪代码描述如下:
R14_<exception_mode>=return link
SPSR_<exception_mode>=CPSR
CPSR[4:0]=exception mode number
CPSR[5]=0 /* 当运行于ARM状态时 */
if <exception_mode> == Reset or FIQ then
CPSR[6]=1 /* 禁止新的FIQ中断 */
CPSR[7]=1 /* 禁止新的IRQ中断 */
PC = exception vector address
注意:异常发生时异常模式R14的定义是PC-4。
IRQ、FIQ和ABT(指令预取)异常中断处理程序的返回
发生IRQ或者FIQ异常中断时,指令已经执行完毕,PC指向当前指令后面的第3条指令。因此IRQ或者FIQ的异常中断发生时,处理器将程序计数器的计算值(PC-4)保存到LR_IRQ或者LR_FIQ寄存器中。这时LR_IRQ或者LR_FIQ寄存器的值指向当前指令后的第2条指令。
在指令预取时如果目标地址是非法的,该指令将被标记成有问题的指令,处理器产生指令预取ABT异常。此刻PC的值还没有更新,它指向当前指令后的第2条指令。指令预取ABT异常中断发生时,处理器将程序计数器的计算值(PC-4)保存到异常模式LR_ABT。这时LR_ABT寄存器的值指向当前指令后的第1条指令。
当IRQ、FIQ和ABT(指令预取)异常中断处理程序退出时,前两种情况下应该执行断点的下一条指令,后一种情况下程序应该返回到有问题的指令处(即断点指令),重新读取并执行。无论上述三种情况的那一种,返回操作都应该通过SUBS PC, LR, #4指令实现。该指令将寄存器LR中的值复制到程序计数器PC中,实现程序返回,同时将SPSR_SVC或者SPSR_UND寄存器的内容复制到CPSR中。
- ARM7 响应异常处理时的断点返回地址计算
- ARM各种异常返回地址的计算
- ARM处理器异常处理的返回地址分析
- Arm异常中断返回时的处理
- ARM7异常
- AJAX处理以XML返回的响应
- arm7 LPC2103 中断的处理方法
- ARM中断异常处理的返回
- HttpWebRequest 返回417异常的处理
- ARM中断异常处理的返回
- ARM中断异常处理的返回
- ARM中断异常处理的返回
- ARM中断异常处理的返回
- 异常发生时的硬件操作及异常返回时的处理
- 带有webview的activity响应系统返回键的处理
- ajax返回异常处理
- eclipse的异常断点和条件断点
- 处理地址异常
- php 中$_SESSION的理解
- 《山寨革命》
- 传说中的倒排索引
- word size suffix in GAS
- U-BOOT全线移植
- ARM7 响应异常处理时的断点返回地址计算
- 云计算面临的技术挑战
- [转]数学书推荐
- ACCESS支持的时间日期函数2007年01月10日 16:01ACCESS支持的时间日期函数
- 微软系统漏洞_超长文件路径打造私人地盘
- Java解释Excel数据(jxl.jar包的使用)
- 梦醒了
- 程序的寂寞~~
- Web Dynpro APIs