概念
Thumb 指令
為以 Thumb 狀態運行的、基于 ARM 體系結構的處理器的操作進行編碼的一個半字或兩個半字。 Thumb 指令必須為半字對齊。
Thumb 狀態
執行 Thumb 指令的處理器工作在 Thumb 狀態。 當直接通過 BX、BLX 等指令完成時,處理器可切換到 ARM 狀態(以識別 ARM 指令)。
Thumb-2 指令
Thumb-2 是 Thumb 指令集的一項主要增強功能,并且由 ARMv6T2 和 ARMv7M體系結構定義。 Thumb-2 提供了幾乎與 ARM 指令集完全一樣的功能。 它兼有16 位和 32 位指令,并可檢索與 ARM 類似的性能,但其代碼密度與 Thumb 代碼類似。
Thumb-2EE 指令
Thumb-2 執行環境 (Thumb-2EE) 由 ARMv7 體系結構定義。 Thumb-2EE 指令集基于 Thumb-2,前者進行了一些更改和添加,使得動態生成的代碼具有更好的目標,也就是說,就在執行之前或在執行過程中即可在該設備上編譯代碼。
ThumbEE 狀態
執行 Thumb-2EE 指令的處理器正在以 ThumbEE 狀態運行。 在此狀態下,該指令集幾乎與 Thumb 指令集相同。 不過,有些指令已經修改了行為,有些原有的指令已不再提供,另外還新添了一些指令。
說明
在ARM體系結構中,ARM指令集中的指令是32位的指令,其執行效率非常高。
對于存儲系統數據總線為16位的應用系統,ARM體系提供了Thumb指令集。
Thumb指令集是對ARM指令集的一個子集重新編碼得到的,指令長度為16位。
通常在處理器執行ARM程式時,稱處理器處于ARM狀態;當處理器執行Thumb程式時,稱處理器處于Thumb狀態。
Thumb指令集并沒有改動ARM體系地層的程式設計模型,只是在該模型上加上了一些限制條件。
Thumb指令集中的數據處理指令的操作數仍然為32位,指令尋址地址也是32位的。
使用
通常,Thumb程式比ARM程式更加緊湊,而且對于內存為8位或16位的系統,使用Thumb程式效率更高。不過,在下面一些場合下,程式必須運行在ARM狀態,這時就需要混合使用ARM和Thumb程式。
(1)強調速度的場合,應該使用ARM程式;
(2)有些功能只能由ARM程式完成。如:使用或禁止異常中斷;
(3)當處理器進入異常中斷處理程式時,程式狀態轉換到ARM狀態,即在異常中斷處理程式入口的一些指令是ARM指令,然后根據需要程式能轉換到Thumb狀態,在異常中斷程式返回前,程式再轉換到ARM狀態。
(4)ARM處理器總是從ARM狀態開始執行。因而,如果要在調試器中運行Thumb程式,必須為該Thumb程式添加一個ARM程式頭,然后再轉換到Thumb狀態,執行Thumb程式。
-
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35449 -
米爾科技
+關注
關注
5文章
227瀏覽量
21007
發布評論請先 登錄
相關推薦
評論