的固定地址。如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态,则异常处理返回时,自动切换到Thumb状态。8.1.4异常中断处理返回异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:1.将所有修改过的用户寄存器从处理程序的保护栈中恢复。2.将SPSR复制回CPSR中,将连接寄存器LR的值减去相应的偏移量后送到PC中。3.若在进入异常处理时设置了中断禁止位,要在此清除。复位异常处理程序不需要返回。8.1.5ARM系统中的中断向量表当一个异常或中断发生时,处理器会把PC设置为一个特定的存储器地址。这一地址放在一个被称为向量表(vectortable)的特定地址范围内。向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。存储器映射地址0x00000000是为向量表保留的。在有些处理器中,向量表可以选择定位在存储空间的更高地址(从偏移量0xffff0000开始)。当一个异常或中断发生时,处理器挂起正常的执行转而从向量表装载指令。每一个向量表入口包含一条指向一个特定子程序的跳转指令。同时需要注意的是:1.中断向量表指定了各异常中断及其处理程序的对应关系。他通常存放在存储地址的低端。在ARM体系中,异常中断向量表的大小为32字节,其中每个异常中断占据4个字节大小,保留了4个字节空间。2.每个异常中断对应的中断向量表中的4个字节的空间中存放了一个跳转指令或者一个向PC寄存器中赋值的数据访问指令。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。3.当几个异常中断同时发生时,系统并不能按照一定的次序来处理这些异常中断,例如:当FIQ、IRQ和第三个其他中断同时发生,FIQ比IRQ优先级高,IRQ会忽略,直到FIQ返回到用户代码为止。ARM所支持的各个异常中断的中断向量地址以及中断的处理优先级如表8-1所示。