上QQ阅读APP看书,第一时间看更新
2.3.3 ARM的异常响应
2.3.3 ARM的异常响应
当一个异常发生时,ARM920T将进行以下步骤:
1)将下一条指令的地址保存到相应的连接寄存器LR中。如果异常是从ARM状态进入的,下一条指令的地址(根据异常的类型,数值为当前PC+4或PC+8)复制到Link寄存器。如果异常是从THUMB状态进入,那么写入到Link寄存器的值是当前的PC偏移一个值。这表示异常处理程序不需要关心是从哪种状态进入异常的。例如,在软件中断异常SWI情况下,无论是来自什么状态,处理程序只要采用“MOVS PC,R14_svc”语句,总可以返回到原始程序的下一条语句,不管SWI是在ARM状态执行,还是在Thumb状态执行。
2)复制CPSR到相应的SPSR。
3)根据异常类型,强制改变CPRS模式位的值。
4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
2.3.3 ARM的异常响应(动画演示)
如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。
ARM微处理器对异常的响应过程用伪码可以描述为: