购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 T humb指令集

早期的Arm处理器使用32位指令集,称为Arm指令。这个指令集具有较高的运行性能,与8位和16位处理器相比,具有更大的程序存储空间。但是,这也带来了较大的功耗。

在1995年,16位的Thumb-1指令集首先应用于Arm7TDMI处理器,它是Arm指令集的子集。与32位的RISC结构相比,它提供了更好的代码密度,将代码长度减少了30%,但性能也降低了20%。通过使用多路复用器,它能够与Arm指令集一起使用。Thumb指令选择如图4.1所示。

图4.1 Thumb指令选择

Thumb指令流是一系列采用半字对齐的半字。每条Thumb指令要么是该流中的单个16位半字,要么是包含该流中两个连续半字的32位指令。

如果要解码的半字的位域[15:11]取0b11101、0b11110、0b11111中的任何值,则该半字是32位指令的第一个半字;否则,半字为16位指令。

Thumb-2指令集由32位的Thumb指令和最初的16位Thumb指令组成,与32位的Arm指令集相比,其代码长度减少了26%,但保持相似的运行性能。

Cortex-M0+采用了Armv6-M的结构,将电路规模降低到最小,它采用了16位Thumb-1的超集,以及32位Thumb-2的最小子集。

Cortex-M0+支持的16位Thumb指令如图4.2所示。

图4.2 Cortex-M0+支持的16位Thumb指令

Cortex-M0+支持的32位Thumb指令如图4.3所示。

图4.3 Cortex-M0+支持的32位Thumb指令

思考与练习4.1:请说明Thumb指令集的主要特点。

思考与练习4.2:请说明Thumb-1指令集和Thumb-2指令集的区别。 JJiGUK1xOFGTu8C1ABnTUImM+wA/xjd5cjjgGXrmnyPZZClOnVfFoJfQYY3VoQGr

点击中间区域
呼出菜单
上一章
目录
下一章
×