[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
'Embedded SW' 카테고리의 다른 글
특별한 용도의 ARM register (Special Purpose Register) (0) | 2021.05.05 |
---|