天天看點

ARM_s5pv210_arm_5(上)

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

ARM_s5pv210_arm_5(上)

R0-R12:通用寄存器

R13(sp):棧頂指針,棧頂的位址,棧是記憶體的一個區域,異常模式下,都有自己的棧,在發生異常的時候,cpu會自動切換異常模式,先保護現場,将上一模式下的寄存器進行入棧,等到異常處理完畢,傳回上一模式時,再将棧中儲存的值依次出棧到對應的寄存器。

入棧:保護現場,出棧:傳回現場

R14(lr):存放傳回位址

R15(pc):存放的取值的指令的位址

ARM_s5pv210_arm_5(上)

執行一條指令,分三個階段:

取值->解碼->執行

這三個階段,分别為三個不同的硬體來完成

取值 解碼 執行

push

add push

ldr add push

故正在執行的指令是push 位址:20008000

正在解碼的指令的位址: 20008004

正在取值的指令的位址: 20008008

pc = 20008008

正在執行的指令的位址 = 正在取值的指令的位址 - 8

cpsr:儲存目前狀态

spsr:備份cpsr内的數值(狀态)

/******************/