一. ARM 工作模式
1. ARM7,ARM9,ARM11,處理器有 7 種工作模式;Cortex-A 多了一個監視模式(Monitor)
2. 用戶模式:非特權模式,大部分任務執行在這種模式,它運行在操作系統的用戶態,沒有權限操作其他硬件資源,只能執行處理自己的數據,也不能切換到其他模式下
3. 快速中斷模式 : 當一個高優先級(fast) 中斷產生時將會進入這種模式
4. 普通中斷模式 : 當一個低優先級(normal) 中斷產生時將會進入這種模式
5. 管理模式(SVC) :當復位或軟中斷指令執行時將會進入這種模式
6. 中止模式 : 當存取異常時將會進入這種模式 Undef : 當執行未定義指令時會進入這種模式
7. 系統模式 : 使用和User模式相同寄存器集的特權模式 Cortex-A 增加的工作模式:
8. 監控模式 : 是為了安全而擴展出的用於執行安全監控代碼的模式
二. ARM 指令集
ARM指令集:一條指令占 32 位 ,4字節,影響 PC 中的地址
Thumb指令集: 一條指令占 16 位 ,2字節
三. ARM 寄存器
Cortex-A 寄存器:標三角的是相應模式狀態下的獨立的寄存器;其他事通用寄存器,也就是各個模式下可以共同使用的寄存器;Cortex-A 共40個寄存器, 共23 個特殊功能寄存器,17 個通用寄存器。
R13 :棧指針寄存器 SP 保存棧內存空間的首地址值
R14:鏈接寄存器 LR 保存函數返回地址值
R15:當前程序計數器 PC 保存當前取址指令的地址值
CPSR:當前程序狀態寄存器
SPSR:保存程序狀態寄存器,用來保存 CPSR 值
PC 寄存器指向的地址值:
對於ARM 狀態(arm指令集), PC 寄存器的低2位沒有定義 PC[1,0] ,arm指令占 4字節,也就是PC 中地址是4的倍數
對於Thumb狀態(Thumb指令集),PC寄存器的低1位沒有定義 PC[0],Thumb占 2字節,也就是PC中地址是 2 的倍數, PC 中的地址就是每條執行指令的地址
CPSR 寄存器中各bit 對應的功能