뚝딱뚝딱 블로그
Linux - ARMv8 레지스터 본문
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 |