iOS crash追踪(一)异常的处理机制

  1. 什么异常

    所谓异常就是正常的用户程序被暂时中止,处理器就进入异常模式,例如响应一个来自外设的中断,或者当前程序非法访问内存地址都会进入相应异常模式

  2. 异常是如何被发现的
    异常是由硬件识别的,硬件具有识别各种异常的能力,不管任何操作最后都是由硬件来执行的,例如一个除0操作,在运算器处理的时候会直接识别出该操作是一个异常,然后将CPSR(程序状态寄存器,有些地方也称为psw)中的模式位设置为异常类型相对应的异常码

  3. 异常的处理机制
    例如,当运算器进行除0操作时会产生异常这时会做如下处理

  • 保存执行状态:将CPSR复制到发生的异常模式下SPSR中,;

  • 模式切换:将CPSR模式位强制设置为与异常类型相对应的值,同时处理器进入到ARM执行模式,禁止所有IRQ中断,当进入FIQ快速中断模式时禁止FIQ中断;

  • 保存返回地址:将下一条指令的地址(被打断程序)保存在LR(异常模式下LR_excep)中。

  • 跳入异常向量表:强制设置PC的值为相应异常向量地址,跳转到异常处理程序中。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值