【摘要】:自从有了ARM7TDMI 核以后,体系结构中具有T 变种的ARM 处理器核可以工作在ARM状态和Thumb 状态,且两种状态可通过BX 指令相互切换。所有的异常都是在ARM 状态下进行,如果处理器在Thumb 状态进入异常,则当异常处理返回时,自动切换到Thumb 状态。2)进入ARM 状态当操作数寄存器Rm 的状态位bit[0]为“0”时,执行BXRm 指令进入ARM 状态。②ARM 指令集和Thumb 指令集都有相应的状态切换命令。③ARM 处理器在开始执行代码时,只能处于ARM 状态。
自从有了ARM7TDMI 核以后,体系结构中具有T 变种的ARM 处理器核可以工作在ARM状态和Thumb 状态,且两种状态可通过BX 指令相互切换。
(1)两种工作状态
1)ARM 状态
32 位,此时处理器执行字对齐的32 位ARM 指令;
2)Thumb 状态
16 位,此时处理器执行半字对齐的16 位Thumb 指令。
(2)工作状态的切换
1)进入Thumb 状态
当操作数寄存器Rm 的状态位bit[0]为“1”时,执行BX Rm 指令进入Thumb 状态。
所有的异常都是在ARM 状态下进行,如果处理器在Thumb 状态进入异常,则当异常处理(IRQ,FIQ,Undef,Abort 和SWI)返回时,自动切换到Thumb 状态。(www.xing528.com)
2)进入ARM 状态
当操作数寄存器Rm 的状态位bit[0]为“0”时,执行BX Rm 指令进入ARM 状态。
如果处理器进行异常处理(IRQ、FIQ、Undef、Abort 和SWI),在此情况下,将PC 放入异常模式链接寄存器LR 中,从异常向量地址开始执行也可以进入ARM 状态。
在程序执行的过程中,处理器可以在两种状态下切换。 需要强调的是:
①ARM 和Thumb 之间状态的切换不影响处理器的模式或寄存器的内容。
②ARM 指令集和Thumb 指令集都有相应的状态切换命令。
③ARM 处理器在开始执行代码时,只能处于ARM 状态。
④当进行异常处理时,必须是ARM 状态下的ARM 指令,此时,如果原来工作于Thumb 状态,必须将其切换到ARM 状态,使之执行ARM 指令。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。