ARM的7种处理器模式,依靠CPSR(当前程序状态寄存器)中的控制位M[4:0]来反应处理器正在操作的模式。
除了正常运行时,处理器所处于的用户模式usr,其他6种处理器模式都称之为特权模式(Privileged),分别是系统模式和异常模式。见上表所示。
只有在特权模式下(即非用户模式下),才能对CPSR的所有控制位直接进行读/写访问,而在非特权模式下只能对CPSR的控制位进行间接访问。
异常模式
上表给出了处理器的5种异常模式,并且给出了简要的介绍。处理器要进入异常,需要通过程序修改CPSR,下面是从系统模式切换到管理模式的示例:
MSR CPSR_c, #(NoInt | SVC32Mode)。
当发生异常时,处理器总是切换到ARM状态而非Thumb状态。
每一种异常,会对应处理器的一种模式相对应,这样,一旦应用程序发声特定的异常中断时,处理器就会进入相对应的异常模式。处理器的内核立即跳转到向量表中的某个入口地址,执行相应的处理程序。与此同时,在每一种异常模式中都有对应的寄存器,供相应的异常处理程序使用,从而保证处理器在进入异常模式时,用户模式下的寄存器不被破坏。
待完善……