Thumb[ARM體系結構的指令集]

Thumb[ARM體系結構的指令集]

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

Thumb指令

基本介紹

從ARMv4T之後的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式執行指令均耗用4位元的情形有關。

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

Thumb套用

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

相關詞條

相關搜尋

熱門詞條

聯絡我們