如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。
ARM微处理器对异常的响应过程用伪码可以描述为:
R14_
SPSR_
CPSR[4:0] = Exception Mode Number
CPSR[5] = 0 ;当运行于 ARM 工作状态时
If
CPSR[6] = 1
PSR[7] = 1
PC = Exception Vector Address
异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:
将连接寄存器LR的值减去相应的偏移量后送到PC中。
将SPSR复制回CPSR中。
若在进入异常处理时设置了中断禁止位,要在此清除。
--------------------------------------------------------------------------------
以上是我看到的关于进入异常地描述。这些工作是处理器自动完成的还是要自己写代码啊,因为在进入IRQ的时候根本没看到这样的代码,直接就去0x18执行了啊,是不是处理器自己做完了这些工作,然后把PC强行设定为0x18啊。