发生异常的时候PC指针的变化

当异常或中断如IRQ、FIQ在ARM系统中发生时,处理器会自动进行模式切换、状态寄存器更新,并跳转到异常中断向量表进行处理。处理完成后,需要正确返回到中断前的位置继续执行。对于某些异常,如除数为零,程序不会返回到异常指令,而是跳过。确定返回地址是关键,确保程序的正常流程。
摘要由CSDN通过智能技术生成

标题

异常就是正在执行的指令,由于各种软件或硬件故障被打断,比如,在读数据或指令时,访问存储器失败、产生了一个外部硬件中断等。当这些情况发生时,在ARM系统里,由异常和中断处理程序做出相应的处理,当处理完成后,要返回到被中止的指令,使被中止的指令能够继续正常执行下去。因此,确定异常和中断处理程序的返回地址是一个非常重要的问题。

标题

当外部中断IRQ和FIQ(Fast Interrpt Request,快速中断请求)发生时,ARM核完成一部分工作。当然,这些工作是任何异常发生时都必须要做的,所以ARM处理器就会自动带我们完成。 其它重要的工作,必须由程序员来完成。ARM处理器处理的事包括从用户模式切换到IRQ模式、状态寄存器值的变化及跳转。比如说,处理器自动跳转到从0x0地址开始的异常中断向量表的0x18处,在向量表的0x18处,最简单的指令为”B HandlerIRQ”。

简而言之

当发生中断的时候,因为在取指令阶段PC自动转跳为下一条指令的地址,在中断隐指令的的作用下保存的PC(入栈的PC)也是下一条指令的地址。但是由于诸如缺页中断等中断,需要返回中断 的指令,此时的PC返回地址应为 当前栈内PC-1.另一方面,考虑到特殊情况,如除数为零和自行中断( INT )都会自动跳过中断指令,所以不会返回到发生异常的指令继续执行,PC不需要 变化。

具体情况具体分析

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值