为了增强和扩展指令系统的能力而奋斗,多少年来这一直是ARM锲而不舍的精神动力。
由于历史原因(从ARM7TDMI开始),ARM处理器一直支持两种形式上相对独立的指令集,它们分别是:
32位的ARM指令集。对应处理器状态:ARM状态
16位的Thumb指令集。对应处理器状态:Thumb状态
可见,这两种指令集也对应了两种处理器执行状态。在程序的执行过程中,处理器可以动态地在两种执行状态之中切换。实际上,Thumb指令集在功能上是ARM指令集的一个子集,但它能带来更高的代码密度,给目标代码减肥。这对于要勒紧裤腰带的应用还是很经济的。
译注1: 原书把Thumb-2的问世时间放到v7中,但根据其它权威文献的记录,似有误,应在v6中问世。(如《ARM and Thumb-2 Instruction Set Quick Reference Card》中的描述) 随着架构版本号的更新,新好指令不断地加入ARM和Thumb指令集中。附录2中给出的内容,就是Thumb指令在架构进化过程中的改变记录。Thumb-2是2003年盛夏的果实,它是Thumb的超集,它支持both 16位和32位指令。
指令集的详细说明在《The ARM Architecture Reference Manual》(简称为ARMARM)中。每次ARM出新版本时此手册都有更新。到了v7时,因为以前的单一架构被分成了3个款式,这个规格书也就跟着变成了3本。为Corex-M3的ARMv7-M架构而写的那本叫《ARMv7-M Architecture Application Level Reference Manual(Ref2)》,对于软件开发人员,那里面把该说的都说了。