ARM7有兩套指令系統,分別爲ARM指令集和Thumb指令集。spa
ARM指令集爲32位長,具備最完整的功能;Thumb指令集爲16位長度,能實現ARM指令集的大部分功能。設計
Thumb指令集具備極高的代碼密度(平均縮減30%的代碼量)。it
ARM處理器有兩個處理器狀態與這2套指令集分別對應。程序
以「當前程序狀態寄存器CPSR」中的控制位T反映處理器正在操做的狀態,即哪一種指令集正在執行。T=0時,處理器處於ARM狀態,執行ARM指令。T=1時,處理器處於Thumb狀態,執行Thumb指令。其中處理器在系統上電時默認爲ARM狀態。co
不管處理器處於何種狀態,ARM指令集與Thumb指令集不一樣同時混合使用。內核
BX指令能夠實現將ARM內核的操做狀態在ARM和Thumb之間進行切換。系統
PS:BX用法。
BX:帶狀態切換的跳轉指令,跳轉到Rm指定的地址執行程序,若Rm的位[0]爲1,則跳轉時自動將CPSR的標誌T置位,即把目標地址的代碼解釋爲Thumb狀態代碼;若Rm的位[0]爲0,則跳轉時自動將CPSR中的標誌T復位,即把目標地址的代碼解釋爲ARM代碼,指令格式以下,
BX{cond} Rm
爲了讓用戶更好地控制代碼量,纔會設計了這兩套指令系統。