ARM工作模式
Arm體系結(jié)構(gòu)將存儲器看做是從零地址開始的字節(jié)的線性組合。從零字節(jié)到三字節(jié)放置第一個存儲的字(32位)數(shù)據(jù),從第四個字節(jié)到第七個字節(jié)放置第二個存儲的字數(shù)據(jù),一次排列。作為32位的微處理器,arm體系結(jié)構(gòu)所支持的最大尋址空間為4GB。
本文引用地址:http://m.butianyuan.cn/article/201611/322376.htm存儲器格式
指令長度:
Arm微處理器的指令長度是32位的,也可以為16位(thumb狀態(tài)下)。Arm微處理器中支持字節(jié)(8位),半字(16位),字(32位)三種數(shù)據(jù)類型,其中,字需要4字節(jié)對齊,半字需要2字節(jié)對齊。
注:所謂的指令長度是一條完整的指令的長度,而不是單純的mov這3個字母長度
二、ARM體系的CPU有兩種工作狀態(tài)
1、ARM狀態(tài):處理器執(zhí)行32位的字對齊的ARM指令;
在程序運行的過程中,可以在兩種狀態(tài)之間進行相應(yīng)的轉(zhuǎn)換。處理器工作狀態(tài)的轉(zhuǎn)變并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容。
CPU上電處于ARM狀態(tài)
三、ARM體系的CPU有以下7種工作模式:
Arm的工作模式切換有兩種方法:
被動切換:在arm運行的時候產(chǎn)生一些異?;蛘咧袛鄟碜詣舆M行模式切換
主動切換:通過軟件改變,即軟件設(shè)置寄存器來經(jīng)行arm的模式切換,應(yīng)為arm的工作模式都是可以通過相應(yīng)寄存器的賦值來切換的。
Tips:當處理器運行在用戶模式下,某些被保護的系統(tǒng)資源是不能被訪問的。
除用戶模式外,其余6種工作模式都屬于特權(quán)模式;
特權(quán)模式中除了系統(tǒng)模式以外的其余5種模式稱為異常模式;
大多數(shù)程序運行于用戶模式;
進入特權(quán)模式是為了處理中斷、異常、或者訪問被保護的系統(tǒng)資源;
四、寄存器
ARM有31個通用的32位寄存器,6個程序狀態(tài)寄存器,共分為7組,有些寄存器是所有工作模式共用的,還有一些寄存器專屬于每一種工作模式;
R13——棧指針寄存器,用于保存堆棧指針;
R14——程序連接寄存器,當執(zhí)行BL子程序調(diào)用指令時,R14中得到R15的備份,而當發(fā)生中斷或異常時,R14保存R15的返回值;
R15——程序計數(shù)器;
快速中斷模式有7個備份寄存器R8—R14,這使得進入快速中斷模式執(zhí)行很大部分程序時,甚至不需要保存任何寄存器;
其它特權(quán)模式都含有兩個獨立的寄存器副本R13、R14,這樣可以令每個模式都擁有自己的堆棧指針和連接寄存器;
五、當前程序狀態(tài)寄存器(CPSR)
CPSR中各位意義如下:
T位:1——CPU處于Thumb狀態(tài), 0——CPU處于ARM狀態(tài);
I、F(中斷禁止位): 1——禁止中斷, 0——中斷使能;
工作模式位:可以改變這些位,進行模式切換;
六、程序狀態(tài)保存寄存器(SPSR)
當切換進入某一個特權(quán)模式時,SPSR保存前一個工作模式的CPSR值,這樣,當返回前一個工作模式時,可以將SPSR的值恢復(fù)到CPSR中;
七、模式切換
當異常發(fā)生,CPU進入相應(yīng)的異常模式時,以下工作是由CPU自動完成的:
1、在異常模式的R14中保存前一工作模式的下一條即將執(zhí)行的指令地址;
2、將CPSR的值復(fù)制到異常模式的SPSR中;
3、將CPSR的工作模式設(shè)為該異常模式對應(yīng)的工作模式;
4、令PC值等于這個異常模式在異常向量表中的地址,即跳轉(zhuǎn)去執(zhí)行異常向量表中的相應(yīng)指令;
從異常工作模式退回到之前的工作模式時,需要由軟件來完成以下工作:
1、將異常模式的R14減去一個適當?shù)闹担?或8)后賦給PC寄存器;
2、將異常模式SPSR的值賦給CPSR;
評論