Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

뚝딱뚝딱 블로그

Linux - ARMv8 레지스터 본문

Linux

Linux - ARMv8 레지스터

germonado 2022. 7. 3. 16:27

ARMv8 레지스터

AArch64는 64bit 범용 레지스터 31개 제공

- W0 ~ W30(32bit), X0 ~ X30(64bit)로 W, X로 레지스터 사용 size 알 수 있음.

- PC, ELR, SPSR, SP, ZR 레지스터

  • PC - 다음에 실행할 instruction 위치 저장
  • ELR(Exception Link Register) - Exception 처리 후 복귀(돌아갈) 실행 위치를 저장함.(Exception Level 0를 제외하고 Exception Level마다 존재)
  • SPSR(Saved Process Status Register) - 특정 시점의 프로세서 상태를 저장하는 register, exception 발생시 PSTATE processor 상태 저장
  • SP(Stack Pointer) - Exception Level마다 stack 있고, 해당 Exception Level의 stack 현재 위치를 가리킴.(Stack에 마지막으로 채워진, top 부분)
  • ZR(Zero Register) - source register로 사용되면 0이 읽히고, 목적 register로 사용되면 결과 값이 버려진다.
    • 목적 register로 사용되면 결과 값이 버려진다? instruction의 규칙상 목적 register가 format을 맞추기 위해 사용되어야 하는 경우가 있는데, 그러한 경우에 ZR를 사용합니다.

- MSR, MRS로 시스템 레지스터 제어

  • MRS - CPSR, SPSR의 내용을 레지스터로 복사
  • MSR - 레지스터의 내용을 CPSR, SPSR로 복사

- ABI 레지스터 사용 규칙

  • X0 ~ X7 - 파라미터 레지스터(함수 호출시 파라미터로 담아서 넘겨주는 register)
  • X9 ~ X15 - Caller 저장 레지스터(Caller가 자신의 stack frame에 저장)
  • X19 ~ X28 - Callee 저장 레지스터(Callee가 복원 담당하는 값들 저장)
  • X8, X16~X18, X29, X30 - 특수 목적 레지스터

'Linux' 카테고리의 다른 글

리눅스 스터디 #2 프로세스 관리  (1) 2024.12.01
리눅스 스터디 #1 개요  (1) 2024.12.01
Linux - Cache(ARM based)  (0) 2022.07.03
Linux - ARM AArch64 Exception Handling  (0) 2022.07.03
Linux - ARMv8 아키텍처  (0) 2022.07.03