ARM 學(xué)習(xí)筆記01
User:非特權(quán)模式官紫,大部分任務(wù)執(zhí)行在這種模式
FIQ:當(dāng)一個(gè)高優(yōu)先級(fast)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式
IRQ:當(dāng)一個(gè)低優(yōu)先級(normal)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式
Supervisor(SVC):當(dāng)復(fù)位或軟中斷指令執(zhí)行時(shí)將會(huì)進(jìn)入這種模式
Abort:當(dāng)存取異常時(shí)將會(huì)進(jìn)入這種模式
Undef:當(dāng)執(zhí)行未定義指令時(shí)會(huì)進(jìn)入這種模式
System:使用和User模式相同寄存器集的特權(quán)模式
可以通過軟件來進(jìn)行模式切換肛宋,或者發(fā)生各類中斷、異常時(shí)CPU自動(dòng)進(jìn)入相應(yīng)的模式束世;除User模式外酝陈,其余6種工作模式都屬于特權(quán)模式;特權(quán)模式中除了System模式以外的其余5種模式稱為異常模式毁涉;大多數(shù)程序運(yùn)行于用戶模式后添;** 進(jìn)入特權(quán)模式是為了處理中斷、異常薪丁、或者訪問被保護(hù)的系統(tǒng)資源
ARM體系的CPU有兩種工作狀態(tài)
ARM
THumb
CPU上電處于ARM狀態(tài)
二遇西、寄存器
ARM有37個(gè)寄存器
每個(gè)寄存器都是32位(4字節(jié))
1個(gè)用作PC(Program Counter)
1個(gè)用作CPSR(Current Program Status Register)
5個(gè)用作SPSR(Saved Program Status Registers)
30個(gè)通用寄存器
沒有標(biāo)三角的寄存器是在七種模式下公用的,標(biāo)三角的是有額外的寄存器
R13(SP):棧指針寄存器严嗜,用于保存堆棧指針
R14(LR):程序連接寄存器粱檀,當(dāng)執(zhí)行BL子程序調(diào)用指令時(shí),R14中得到R15(PC)的備份漫玄,而當(dāng)發(fā)生中斷或異常時(shí)茄蚯,R14保存R15的返回值
R15(PC):記錄當(dāng)前程序運(yùn)行的位置
CPSR:當(dāng)前程序狀態(tài)寄存器
SPSR:保存之前CPSR狀態(tài)的寄存器
CPSR寄存器
- Mode位:處理器模式位
序號 | Mode位 | 處理器模式 |
---|---|---|
1 | 10000 | User mode |
2 | 10010 | IRQ |
3 | 10111 | Abort mode |
4 | 11111 | System mode |
5 | 10001 | FIQ mode |
6 | 10011 | SVC mode |
7 | 11011 | Undfined mode |
- T位和J位
T = 0;J=0 處理器處于 ARM 狀態(tài)(一條指令4個(gè)字節(jié))
T = 1;J=0 處理器處于 Thumb 狀態(tài)(一條指令2個(gè)字節(jié)) - 中斷禁止位:
I = 1: 禁止 IRQ.
F = 1: 禁止 FIQ - 條件位:
N = Negative result from ALU
Z = Zero result from ALU
C = ALU operation Carried out or borrow
V = ALU operation oVerflowed - CPSR / SPSR操作指令
mrs r0,CPSR (寫入)
msr CPSR,r0 (讀出)
三、練習(xí)測驗(yàn)
1. ARM有哪些工作模式睦优?
2. ARM核有多少個(gè)寄存器渗常?
3. PC和LR寄存器的別名?
4. R13別名是什么汗盘?
5. 哪種模式使用的寄存器最少皱碘?
6. 在 Thumb和ARM指令區(qū)別?
7. CPSR的哪位反映了處理器的狀態(tài)隐孽?