-
什么异常
所谓异常就是正常的用户程序被暂时中止,处理器就进入异常模式,例如响应一个来自外设的中断,或者当前程序非法访问内存地址都会进入相应异常模式
-
异常是如何被发现的
异常是由硬件识别的,硬件具有识别各种异常的能力,不管任何操作最后都是由硬件来执行的,例如一个除0操作,在运算器处理的时候会直接识别出该操作是一个异常,然后将CPSR(程序状态寄存器,有些地方也称为psw)中的模式位设置为异常类型相对应的异常码 -
异常的处理机制
例如,当运算器进行除0操作时会产生异常这时会做如下处理:
-
保存执行状态:将CPSR复制到发生的异常模式下SPSR中,;
-
模式切换:将CPSR模式位强制设置为与异常类型相对应的值,同时处理器进入到ARM执行模式,禁止所有IRQ中断,当进入FIQ快速中断模式时禁止FIQ中断;
-
保存返回地址:将下一条指令的地址(被打断程序)保存在LR(异常模式下LR_excep)中。
-
跳入异常向量表:强制设置PC的值为相应异常向量地址,跳转到异常处理程序中。