Thumb

Thumb

ARM體系結構的指令集
Thumb是ARM體系結構中一種16位的指令集。Thumb指令集可以看作是ARM指令壓縮形式的子集,它是為減小代碼量而提出,具有16bit的代碼密度。Thumb指令體系并不完整,隻支持通用功能,必要時仍需要使用ARM指令,如進入異常時。其指令的格式與使用方式與ARM指令集類似,而且使用并不頻繁,Thumb指令集作一般了解。
  • 中文名:Thumb
  • 外文名:
  • 所屬學科:
  • 結構:ARM體系結構
  • 尾數:16位
  • 性質:指令集

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達到的卓越的代碼效率意味着對存儲器容量需求的降低,使得利用16位寬度的存儲器可以達到32位存儲器才能達到的高性能。

在編寫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.

Thumb應用

在Thumb平台上每提出一個問題就會平均收到50-100個回複,這些回複可能是問題的答案,也可能是用戶對此的評論等等。如此一來,Thumb會逐漸累積各種類型問題的回複。

相關詞條

相關搜索

其它詞條