Thumb指令

来源:互联网 发布:2017网络剧上映时间表 编辑:程序博客网 时间:2024/05/18 01:08
Thumb指令

基本介绍

  Thumb是ARM体系结构中一种16位的指令集。
  从ARMv4T之后的ARM处理器有一种16-bit指令模式,叫做Thumb,也许跟每个条件式执行指令均耗用4位元的情形有关。Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出,具有16bit的代码密度。Thumb指令体系并不完整,只支持通用功能,必要时仍需要使用ARM指令,如进入异常时。其指令的格式与使用方式与ARM指令集类似,而且使用并不频繁,Thumb指令集作一般了解。
  在Thumb模式下,较小的指令码有更少的功能性。例如,只有分支可以是条件式的,且许多指令码无法存取所有CPU的暂存器。然而,较短的指令码提供整体更佳的编码密度,即使有些运算需要更多的指令。特别在内存埠或总线宽度限制在32以下的情形时,更短的Thumb 指令码能更有效地使用有限的内存带宽,因而提供比32位元程式码更佳的效能。典型的嵌入式硬件仅具有较小的32-bit datapath寻址范围以及其他更窄的16 bits寻址。
  Thumb指令在分支指令中一部分可以在ARM指令集之间切换,Thumb的数据处理指令都能映射到相应的
  ARM数据处理指令中。但是单寄存器和多寄存器的加载和存储指令是不能相互交换的。
  最早应用Thumb 技术的处理器是 ARM7TDMI系列的内核。所有 ARM9 和后来的家族,包括 XScale 都纳入了 Thumb 技术。
  在编写Thumb指令时,先要使用伪指令CODE16声明,编写ARM指令时,则可使用CODE32伪指令声明。
  1、Thumb指令集没有协处理器指令、信号量指令、以及访问CPSR或SPSR的指令,没有乘加指令及64位乘法指令等,且指令的第二操作数受到限制;
  2、大多数的Thumb数据处理指令采用2地址格式;
  3、除了跳转指令B有条件执行功能之外,其他指令均为无条件执行,而且分支指令的跳转范围有更多限制;
  4、数据处理指令是对通用寄存器进行操作,在大多数情况下,操作的结果放入其中一个操作数寄存器中,而不是放入第3个寄存器中;访问寄存器R8~R15受到一定的限制,除MOV、ADD指令访问R8~R15外,其他数据处理指令总是更新CPSR中ALU状态标志,访问寄存器R8~R15的Thumb数据处理指令不能更新CPSR中的ALU状态指示。
  5、Thumb状态下,单寄存器加载和存储指令只能访问寄存器R0~R7;
  6、LDM、STM指令可以将任何范围为R0~R7的寄存器子集加载或存储;
  7、PUSH、POP指令使用栈寄存器R13作为基址堆栈操作。

Thumb指令与ARM指令的区别

  1.分支指令:跳转的范围小,除B指令外,都是无条件跳转.
  2.数据处理指令:Thumb指令只有2个操作数,而ARM指令是3个操作数.
  3.单寄存器加载存储指令:Thumb指令只能访问R0~R7.
  4.多寄存器加载存储指令:Thumb指令只能访问R0~R7的子集.
  5.Thumb特有指令:PUSH和POP作用于R13.
原创粉丝点击