아래 글에서 ARM register 중 특별한 용도로 사용되는 register가 있다고 소개했다.
2021.05.05 - [Embedded SW] - ARM7 레지스터와 모드(ARM7 register and mode)
ARM register 중 특별한 용도로 사용되는 register( R13(SP), R14(LR), R15(PC), CPSR, SPSR)가 있다.
[R13 - Stack Pointer(SP)]
현재 stack을 어디까지 쌓아두었는지 가리키는 register
[R14 - Link Register(LR)]
ARM이 어디론가 분기(branch)하기 전에 돌아올 위치를 저장해 놓는 register.
[R15 - Program Counter(PC)]
다음에 실행 할 명령어의 주소값을 저장해 놓는 register
[CPSR - Current Program Status Register]
현재 status를 저장하는 register
- [31]번 bit : N(negative)
- Negative result from ALU - [30]번 bit : Z(zero)
- Zero result from ALU - [29]번 bit : C(carry)
- ALU operation caused Carry - [28]번 bit : V(over flow)
- ALU operation oVerflowed - [7]번 bit : I(interrupt)
- 1: disable irq, 0 : enable irq - [6]번 bit : F(fast interrupt)
- 1 : disable fiq, 0 : enable fiq - [5]번 bit : T(Thumb)
- 1 : thumb mode, 0 : arm mode - [4:0]번 bit : Mode
Mode [4:0] | |
b10000 | User |
b11111 | System |
b10001 | FIQ |
b10010 | IRQ |
b10011 | SVC(supervisor) |
b10111 | Abort |
b11011 | Undefined |
[SPSR - Saved Program Status Register]
CPSR을 값을 복사하여 백업해 놓는 register (SPSR에 CPSR값을 백업하고 mode를 바꾼 뒤, 다시 SPSR의 값을 CPSR에 넣으면 이전 mode로 돌아갈 수 있다)
참고) A Saved Program Status Register (SPSR) stores the current value of the CPSR when an exception is taken so that the CPSR can be restored after handling the exception. Each exception handling mode can access its own SPSR. User mode and System mode do not have an SPSR because they are not exception handling modes. (www.keil.com/support/man/docs/armasm/armasm_dom1359731139484.htm)
위 레지스터들을 special purpose register라고 부르고,
그 외 나머지 register인 R0~R12는 CPU의 동작 중 저장용도로 사용된다.
'Embedded SW' 카테고리의 다른 글
ARM7 레지스터와 모드(ARM7 register and mode) (0) | 2021.05.05 |
---|