arm工作狀態-arm狀態和thumb狀態

ARM 260瀏覽

原文作者:又一個暑假

原文地址:http://www.cnblogs.com/yygsj/p/5428500.html

版權聲明:轉載只為交流學習,版權屬于原作者

? 在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位的字對齊的ARM指令,Thumb狀態此時處理器執行16位的,半字對齊的THUMB指令。
切換程序:從ARM到Thumb:
LDR R0,=lable+1 BX R0 從ARM到Thumb: LDR R0,=lable BX R0

1,ARM狀態

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

2,thumb狀態

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

3,thumb-2狀態

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

4,調試狀態

? ? ? 處理器停機時進入調試狀態。

5,arm與thumb間的切換

? 1,由arm狀態切換到thumb

  狀態將寄存器的最低位設置為1

? ? ? BX指令:R0[0]=1,則執行BX? R0指令將進入thumb狀態

??2,由thumb狀態切換到ARM狀態

??? 寄存器最低位設置為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狀態的結合和優化。

七星彩走势图2元网官网