ARM的工作模式和狀態(tài)
ARM狀態(tài): 32位的字對(duì)齊,運(yùn)行ARM指令
Thumb狀態(tài):16位的半字對(duì)齊的Thumb指令
注:CPU在兩種狀態(tài)中切換時(shí)并不影響CPU的工作模式和相應(yīng)的寄存器中的內(nèi)容。
ARM的7種工作模式
3種正常運(yùn)行態(tài):
用戶模式(User):大部分任務(wù)(比如用戶應(yīng)用程序)執(zhí)行在這種模式。
系統(tǒng)模式(System):運(yùn)行操作系統(tǒng)的特權(quán)任務(wù)。
管理模式(Supervisor):當(dāng)復(fù)位或者軟中斷指令執(zhí)行時(shí)將會(huì)進(jìn)入這種模式。
2種中斷模式
快速中斷模式(FIQ--First Interrupt Request):當(dāng)一個(gè)高優(yōu)先級(jí)中斷(FIQ)產(chǎn)生時(shí)會(huì)進(jìn)入這種模式。
外部中斷模式(IRQ--Interrupt Request):當(dāng)一個(gè)低優(yōu)先級(jí)(Normal)中斷產(chǎn)生時(shí)進(jìn)入這種模式。
注:FIQ和IRQ的區(qū)別---FIQ模式必須盡快處理,處理結(jié)束后離開這個(gè)模式;IRQ模式可以被FIQ模式中斷,但I(xiàn)RQ不能中斷FIQ模式;為使FIQ模式響應(yīng)更快,F(xiàn)IQ模式具有更多的影子(Shadow)寄存器(硬件自動(dòng)完成相應(yīng)寄存器的數(shù)據(jù)備份)。ARM的FIQ模式提供了更多的banked寄存器,r8到r14還有SPSR,而IRQ模式就沒有那么多,R8,R9,R10,R11,R12對(duì)應(yīng)的banked的寄存器就沒有,這就意味著在ARM的IRQ模式下,中斷處理程序自己要保存R8到R12這幾個(gè)寄存器,然后退出中斷處理時(shí)程序要恢復(fù)這幾個(gè)寄存器,而FIQ模式由于這幾個(gè)寄存器都有banked寄存器,模式切換時(shí)CPU自動(dòng)保存這些值到banked寄存器,退出FIQ模式時(shí)自動(dòng)恢復(fù),所以這個(gè)過程FIQ比IRQ快。
2種異常模式
數(shù)據(jù)訪問終止模式(Abort):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入這種模式。
未定義指令終止模式(Undef):當(dāng)執(zhí)行未定義指令時(shí)進(jìn)入這種模式。
對(duì)于Cortex A系列的ARM處理器來說,還有一種特有的Minitor模式:
1種特有模式:
Monitor模式:是為了安全而擴(kuò)展出的用于執(zhí)行安全監(jiān)控代碼的模式,也是一種他特權(quán)模式。
評(píng)論