深度探索嵌入式操作系统:从零开始设计、架构和开发
上QQ阅读APP看书,第一时间看更新

3.4.2 Thumb状态

处于Thumb状态时,ARM920T运行的都是16位的指令,指令地址是半字对齐的,即指令地址的最低一位二进制位为0。这些指令都是对ARM的一些指令进行重新编码得到的一个ARM指令集的子集,只能访问系统中有限的寄存器和资源。因为Thumb状态时的指令都是16位的长度,所以也大大减小了程序运行时的存储空间,同时这对16位的存储系统很有效。Thumb指令并没有改变ARM底层的设计模型,只是在高层增加了一些限制,它的数据操作和程序寻址还是32位的。ARM920T处理器不会从任何状态自动切换到Thumb状态。这需要程序员手动切换,用BX指令,可以从ARM状态切换到Thumb状态,执行一段Thumb指令的程序,然后从Thumb状态返回到ARM状态。如果在Thumb状态中运行Thumb程序时产生中断或者异常,处理器自动进入ARM状态,处理完中断或者异常,然后可以从ARM状态中返回Thumb状态下继续运行。

不必过多关注Thumb状态和Thumb指令,因为操作系统代码始终是运行在ARM状态下的。并且还要求操作系统下的应用程序也运行在ARM状态下,这样就简单多了。