ARM架構與體系學(xué)習(三)——ARM處理器狀態(tài)
ARM指令集為32位長(cháng),具有最完整的功能;Thumb指令集為16位長(cháng)度,能實(shí)現ARM指令集的大部分功能。
本文引用地址:http://dyxdggzs.com/article/201611/319113.htmThumb指令集具有極高的代碼密度(平均縮減30%的代碼量)。
ARM處理器有兩個(gè)處理器狀態(tài)與這2套指令集分別對應。
以“當前程序狀態(tài)寄存器CPSR”中的控制位T反映處理器正在操作的狀態(tài),即哪種指令集正在執行。T=0時(shí),處理器處于A(yíng)RM狀態(tài),執行ARM指令。T=1時(shí),處理器處于Thumb狀態(tài),執行Thumb指令。其中處理器在系統上電時(shí)默認為ARM狀態(tài)。
無(wú)論處理器處于何種狀態(tài),ARM指令集與Thumb指令集不同同時(shí)混合使用。
BX指令可以實(shí)現將ARM內核的操作狀態(tài)在A(yíng)RM和Thumb之間進(jìn)行切換。
PS:BX用法。
BX:帶狀態(tài)切換的跳轉指令,跳轉到Rm指定的地址執行程序,若Rm的位[0]為1,則跳轉時(shí)自動(dòng)將CPSR的標志T置位,即把目標地址的代碼解釋為T(mén)humb狀態(tài)代碼;若Rm的位[0]為0,則跳轉時(shí)自動(dòng)將CPSR中的標志T復位,即把目標地址的代碼解釋為ARM代碼,指令格式如下,
BX{cond} Rm
為了讓用戶(hù)更好地控制代碼量,才會(huì )設計了這兩套指令系統。
評論