ARM狀態和THUMB狀態

2022-03-17 22:02:39 字數 1241 閱讀 5312

在arm的體系結構中,可以工作在三種不同的狀態,一是arm狀態,二是thumb狀態及thumb-2狀態,三是除錯狀態。

《嵌入式系統開發與應用教程(第2版)》上介紹說:有兩種狀態arm狀態和thumb狀態,當時初學甚為不解,現在一知半解時再看忽然想到了顯示中的例子:

arm核就好比乙個高中學校,那種包含普通高中和職業高中的。普通高中就相當於arm狀態,職業高中就相當於thumb狀態,這樣還不能理解的話:可以認為 泡泡卡丁車 中普通模式和加速模式,,卡丁車加速要等到集氣管加滿,然後「ctrl」一下,就切換到了加速模式,氣放完了就又回來了,不管加速模式還是普通模式都是在跑,只是速度不一樣而已。

而arm狀態和thumb狀態可以直接通過某些指令直接切換,都是在執行程式,只不過指令長度不一樣而已。這個概念對初學者相當重要,因為當arm thumb是什麼還沒弄清楚,怎麼能理解兩種狀態呢?

他們之間的關係清楚了,這樣就可以深入了解arm狀態是什麼,thumb狀態是什麼了。

另外:arm的m系列主要用thumb指令,arm9和a系列主要用arm指令

s3c2440.s啟動**中根本就沒用thumb指令。

arm處理器工作於32位指令的狀態,所有指令均為32位

arm執行16位指令的狀態,即16位狀態

這個狀態是arm7版本的arm處理器所具有的新的狀態,新的thumb-2核心技術兼有16位及32位指令,實現了更高的效能,更有效的功耗及更少地占用記憶體。總的來說,感覺這個狀態除了兼有arm和thumb的優點外,還在這兩種狀態上有所提公升,優化。

處理器停機時進入除錯狀態。

狀態將暫存器的最低位設定為1

bx指令:r0[0]=1,則執行bx

r0指令將進入thumb狀態

暫存器最低位設定為0

bx指令:r0[0]=0,則執行bx

r0指令將進入arm狀態

當處理器進行異常處理時,則從異常向量位址開始執行,將自動進入arm狀態。

注意:arm處理器復位後開始執行**時總是只處於arm狀態;

cortex-m3只有thumb-2狀態和除錯狀態;

由於thumb-2具有16位/32位指令功能,因此有了thumb-2就無需thumb了。

另外,具有thumb-2技術的arm處理器也無需再arm狀態和thumb-2狀態間進行切換了,因為thumb-2具有32位指令功能。

總的說,arm狀態與thumb狀態的本質區別就是指令的位數不同,arm是32位的指令狀態,而thumb是16位 的指令狀態,而thumb-2狀態是arm狀態和thumb狀態的結合和優化。

ARM狀態和Thumb狀態通俗理解

email baokang325 gmail.com blog kangear.blog.chinaunix.net 嵌入式系統開發與應用教程 第2版 上介紹說 有兩種狀態arm狀態和thumb狀態,當時初學甚為不解,現在一知半解時再看忽然想到了現實中的例子 arm核就好比乙個高中學校,那種包含普通...

ARM指令狀態切換到Thumb指令狀態

注意上面的中的黃色箭頭是我按單步執行後,按了一下後,箭頭所在的位置,這時的r15的值是0x00000004,表示正在執行的指令的位址,當r15的值為0x00000000時,黃色箭頭你說在 呢,當然是在ldr那條指令那裡了,並且表示ldr指令並沒有執行。請大家再看,r0的值為什麼是0x0000000d...

ARM指令狀態切換到Thumb指令狀態

注意上面的中的黃色箭頭是我按單步執行後,按了一下後,箭頭所在的位置,這時的r15的值是0x00000004,表示正在執行的指令的位址,當r15的值為0x00000000時,黃色箭頭你說在 呢,當然是在ldr那條指令那裡了,並且表示ldr指令並沒有執行。請大家再看,r0的值為什麼是0x0000000d...