CPU的异常处理

本文介绍了异常的基本概念,包括异常作为正常流程之外的流程和中断的类型——硬中断和软中断。详细阐述了异常向量表的作用,它是硬件决定的处理异常的入口。在异常发生时,CPU会保存现场,更新程序状态,并转向异常处理函数。异常处理流程包括状态保存、模式切换、中断禁止、返回地址保存等步骤。内容还涉及了ARM架构下的异常处理流程。
摘要由CSDN通过智能技术生成

概述

什么是异常?正常流程之外的流程都叫做异常,中断是异常的一种。

现场保护:中断发生的时候,CPU需要记录当前程序的上下文,然后再去处理异常,以便异常处理完成后,返回到原先的程序当中去。

硬中断和软中断

硬中断就是硬件产生的中断,软中断是一条会汇编指令,只要一执行,就会产生软中断。

异常向量表

所有CPU都有异常向量表,用于处理异常,是硬件决定的。详细来说,出现异常时,CPU转跳到异常处理表,这个行为是硬件决定的,至于异常向量表里面具体的实现动作,是软件定义的。

异常发生的时候,CPU自动把PC寄存器转跳到异常向量处理处理异常。

在这里插入图片描述

如图所示,异常向量表是一个这样的数据结构:不同的异常连续地存放在地址空间中,每个异常对应的向量内容是一个32位的地址,异常发生的时候,CPU将PC寄存器的内容设置成向量指向的地址,CPU进而会去执行地址指向的程序。

ARM的异常处理流程

  1. 将CPSR拷贝到当前模式地SPSR中,以便异常处理后,程序状态寄存器的恢复
  2. 修改CPSR上的标志位,使CPU进入ARM模式,因为Thumb模式不支持异常的处理
  3. 设置中断禁止位,禁止相应的中断(可选)
  4. 保存返回地址到LR寄存器中,以便异常处理后,能够接着上次的位置执行程序
  5. 设置PC程序寄存器,为响应的异常向量
  6. 执行异常处理函数
  7. 从SPSR恢复CPSR
  8. 从LR寄存器恢复PC
  9. 继续运行上一次的程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值