ARM 體系架構
精簡指令集(RISC)
複雜指令集(CISC)
ARM程式設計模型:
1.工作模式:
管理模式SVC:複位,執行SWI指令
快速中斷FIQ:發生高優先級的中斷
中斷IRQ:發生低優先級的中斷
中止:通路存儲器發生非法情況
未定義:執行的指令,不能識别
系統:
使用者:
2.工作模式的分類:
異常/非異常:
異常:管理模式,快速中斷,中斷,中止,未定義
非異常:系統,使用者
權限:
特權模式:其餘6種都是特權模式
非特權模式:使用者模式
3.工作模式之間是否可以切換,如何切換?
工作模式之間可以切換
切換的方式有兩種:
1.處理器自動切換:發生異常,處理器自動進入對應的異常模式
2.指令切換
工作模式之間的切換需要遵循的規則:
1.特權模式之間可以随意切換
2.可以從特權模式進入使用者模式,不能從使用者模式切換到特權模式。
3.如果使用者模式要進入特權模式,可以通過調用SWI指令來完成。
4.ARM的運作狀态:
1—–ARM狀态
執行ARM指令,32bit
PC值字(4個位元組)對齊,PC的值最後兩個bit為0(2進制)
20008000
20008004
20008008
2—–Thumb狀态
執行Thumb指令,16bit
PC的值半字(2個位元組)對齊,PC的值最後一個bit為0(2進制)
20008000
20008002
20008004
20008006
5.運作狀态的切換
1.處理器自動切換
2.用指令切換
6.寄存器:
在Cortex-A8的核心裡面
寄存器沒有位址,如果要使用,直接使用r0,r1
寄存器是32bit

R0-R12:通用寄存器
R13(sp):棧頂指針,棧頂的位址,棧是記憶體的一個區域,異常模式下,都有自己的棧,在發生異常的時候,cpu會自動切換異常模式,先保護現場,将上一模式下的寄存器進行入棧,等到異常處理完畢,傳回上一模式時,再将棧中儲存的值依次出棧到對應的寄存器。
入棧:保護現場,出棧:傳回現場
R14(lr):存放傳回位址
R15(pc):存放的取值的指令的位址
執行一條指令,分三個階段:
取值->解碼->執行
這三個階段,分别為三個不同的硬體來完成
取值 解碼 執行
push
add push
ldr add push
故正在執行的指令是push 位址:20008000
正在解碼的指令的位址: 20008004
正在取值的指令的位址: 20008008
pc = 20008008
正在執行的指令的位址 = 正在取值的指令的位址 - 8
cpsr:儲存目前狀态
spsr:備份cpsr内的數值(狀态)
/******************/