ADuC系列ARM器件应用技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.8.2 Thumb指令集

Thumb指令集可分为4大类指令:分支指令、数据处理指令、寄存器加载与存储指令和异常产生指令。

传统的微处理器结构对于指令和数据有相同的带宽。因此,和16位结构相比,32位结构具有更高的性能,并且在寻址更大的地址空间时要有效得多。

16位结构比32位结构具有更高的代码密度,并且超过32位结构50%的性能。Thumb在32位结构上实现了16位的指令集,这样可提供比16位结构更高的性能和比32位结构更高的代码密度。

Thumb指令集不是一个完整的指令集,它仅仅是通用的ARM指令集的子集,处理器不可能只支持Thumb指令而不支持ARM指令。Thumb指令长度为16位,每条指令都对应一条32位ARM指令,它对处理器模型有相同的效果。

Thumb指令使用标准的ARM寄存器配置进行操作,这样ARM和Thumb状态之间具有极好的互用性。在执行方面,Thumb具有32位内核所有的优点:

● 32位地址空间;

● 32位寄存器;

● 32位移位寄存器和算术逻辑单元(ALU);

● 32位存储器传输。

因此,Thumb提供了长的分支范围、强大的算术操作和巨大的地址空间。Thumb代码仅为ARM代码规模的65%,但其性能却相当于连接到16位存储器系统的ARM处理器性能的160%。因此,Thumb使ARM7TDMI处理器非常适用于那些只有有限的存储带宽并且代码密度很高的嵌入式应用。

16位Thumb和32位ARM指令集使设计者有极大的灵活性,使其可以根据各自应用的需求,在子程序一级上实现对性能或者代码规模的优化。

为了实现16位指令长度,Thumb指令丢弃了ARM指令集的一些特点:

● 大多数Thumb指令是无条件执行的(所有ARM指令都是条件执行的);

● 许多Thumb指令采用2地址格式(除了64位乘法外,ARM数据处理指令采取3地址格式);

● Thumb指令没有ARM指令规则。