본문 바로가기

Embedded SW

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

반응형

아래 글에서 ARM register 중 특별한 용도로 사용되는 register가 있다고 소개했다. 

2021.05.05 - [Embedded SW] - ARM7 레지스터와 모드(ARM7 register and mode)

 

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 S..

computersource.tistory.com

 

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