天天看點

S5PV210系列(裸機二) ARM的程式設計模式、7種模式和37個寄存器

ARM的基本設定

ARM 采用的是位架構.
 ARM 約定:
Byte :   bits
Halfword : bits ( byte)
Word :   bits ( byte)

大部分ARM core 提供:
ARM 指令集(-bit) 
Thumb 指令集(-bit )
Thumb2指令集( & bit)
Jazelle cores 支援 Java bytecode
           

ARM處理器工作模式

ARM 有個基本工作模式:

User : 非特權模式,大部分任務執行在這種模式
FIQ :   當一個高優先級(fast) 中斷産生時将會進入這種模式
IRQ :   當一個低優先級(normal) 中斷産生時将會進入這種模式
Supervisor :當複位或軟中斷指令執行時将會進入這種模式
Abort : 當存取異常時将會進入這種模式
Undef : 當執行未定義指令時會進入這種模式
System : 使用和User模式相同寄存器集的特權模式
           

Note:

除User(使用者模式)是Normal(普通模式)外,其他種都是Privilege(特權模式)。
Privilege中除Sys模式外,其餘種為異常模式。
各種模式的切換,可以是程式員通過代碼主動切換(通過寫CPSR寄存器);也可以是CPU在某些情況下自動切換。
各種模式下權限和可以通路的寄存器不同。
           

ARM的37個寄存器詳解

S5PV210系列(裸機二) ARM的程式設計模式、7種模式和37個寄存器
S5PV210系列(裸機二) ARM的程式設計模式、7種模式和37個寄存器
、ARM共有個寄存器,都是位長度,但是每種模式下最多隻能看到個寄存器,其他寄存器雖然名字相同但是在目前模式不可見。

、個寄存器中個為“通用”型,個固定用作PC,一個固定用作CPSR,個固定用作種異常模式下的SPSR。

、對r13這個名字來說,在ARM中共有個名叫r13(又叫sp)的寄存器,但是在每種特定處理器模式下,隻有一個r13是目前可見的,其他的r13必須切換到他的對應模式下才能看到。這種設計叫影子寄存器(banked register)
           

CPSR程式狀态寄存器

S5PV210系列(裸機二) ARM的程式設計模式、7種模式和37個寄存器
條件位:
N = Negative result from ALU 
Z = Zero result from ALU
C = ALU operation Carried out
V = ALU operation oVerflowed

Q 位:
僅ARM 5TE/J架構支援
訓示飽和狀态

J 位:
僅ARM 5TE/J架構支援
J = 1:  處理器處于Jazelle狀态

中斷禁止位:
I  = 1: 禁止  IRQ.
F = 1: 禁止  FIQ.

T 位:
僅ARM  xT架構支援
T = 0: 處理器處于 ARM 狀态
T = 1: 處理器處于 Thumb 狀态

Mode位:
處理器模式位