ARM处理器有两种工作状态:当执行32位的ARM指令时,工作在ARM状态;当执行16位的Thumb指令时,工作在Thumb状态。指令执行过程中处理器可以随时在两种工作状态之间切换,并且工作状态的改变不会影响处理器工作模式和相应寄存器中的内容。ARM指令集和Thumb指令集均有切换处理器状态的指令。
由ARM状态进入Thumb状态的方法是:当操作数寄存器的状态位(位0)为1时,执行BX指令可以使处理器从ARM状态切换到Thumb状态。此外,如果处理器在Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort和SWI等),则当异常处理返回时,自动切换到Thumb状态。
由Thumb状态进入ARM状态的方法是:当操作数寄存器的状态位(位0)为0时,执行BX指令可以使处理器从Thumb状态切换到ARM状态。此外,当处理器进行异常处理(如IRQ、FIQ、Undef、Abort和SWI等)时,将程序计数器PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。
ARM处理器支持如表1-1所列的7种运行模式。
表1-1 ARM处理器的运行模式(www.daowen.com)
ARM处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数应用程序运行在用户模式下。当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。
除了用户模式和系统模式之外的5种模式又称为异常模式(Exception Modes)。异常模式通常用于处理中断或异常,以及需要访问被保护的系统资源等情况。为了确保从用户模式进入异常模式的可靠性,每种模式都有一些特定的附加寄存器。
系统模式不能由任何异常进入,它与用户模式有完全相同的寄存器,但不受用户模式的限制。系统模式供需要访问系统资源的操作系统任务使用,且不使用与异常模式有关的附加寄存器,从而保证了当任何异常出现时,操作系统任务的状态都是可靠的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。