본문 바로가기

Embedded SW

ARM7 레지스터와 모드(ARM7 register and mode)

반응형

[ARM7 Mode]

ARM7 Core 에는 아래와 같이 7가지 mode가 존재한다.

num mode abbreviations description
1 User USR Usual ARM program execution state, and is used for executing most application programs
2 System SYS Privileged user mode for the operating system (Run privileged operating system tasks)
3 FIQ FIQ When fast interrupt is raised
4 IRQ IRQ When normal interrupt is raised
5 Supervisor SVC A protected mode for the operating system
6 Abort ABT Used to handle memory access violations
7 Undef UND Used to handle undefined instruction

 

User mode만 normal mode이고, 나머지 6개 mode는 privileged mode로 분류된다.

Privileged mode는 서로 Mode 변경이 자유롭게 가능하지만
normal mode는 privileged mode로 Mode변경이 불가능하다.

(SYS <--> FIQ,  IRQ <--> SVC 는 양방향 Mode변경이 가능하지만 
SYS(혹은 그 외 privileged mode) --> USR 방향으로 Mode변경만 가능하다)

 

 

[ARM7 register]

ARM core는 총 37개의 register를 가진다.

banked register는 각 mode별 따로 존재하고 나머지는 mode에 상관없이 공용으로 사용한다.

직접 계산해보면
R0~R15 16개,
CPSR 1개,
FIQ mode의 [R8~R14 + SPSR] 8개,
SVC mode의 [R13~R14 + SPSR] 3개,
ABT mode의 [R13~R14 + SPSR] 3개,
IRQ mode의 [R13~R14 + SPSR] 3개,
UND mode의 [R13~R14 + SPSR] 3개로

16 + 1 + 8 + 3 + 3 + 3+ 3 = 37 개가 나온다.

참고) USR mode와 SYS mode는 banked register가 없다.
         이 둘은 완전히 동일한 register set을 사용한다. 
         (CPSR mode bits값만 차이가 남. 추후에 다룸)

 

특별한 용도의 register인 R13(SP), R14(LR), R15(PC), CPSR, SPSR 에 대해서는
다음 포스팅에서 알아보자.

 

참고 :

Embedded Recipes 책,

developer.arm.com/documentation/ddi0210/c/Programmer-s-Model/Operating-modes

 

Documentation – Arm Developer

 

developer.arm.com

 

반응형

'Embedded SW' 카테고리의 다른 글

특별한 용도의 ARM register (Special Purpose Register)  (0) 2021.05.05