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