이번에는 ARMv8 아키텍처의 64비트 명령어 기준으로 레지스터 세트에 대해 알아봅시다. 다음은 ARM 스팩 문서에서 발췌한 내용입니다.
출처: DDI0487A_g_armv8_arm.pdf
B1.2.1 Registers in AArch64 state
In the AArch64 application level view, an ARM processing element has:
R0-R30 31 general-purpose registers, R0 to R30. Each register can be accessed as:
• A 64-bit general-purpose register named X0 to X30.
• A 32-bit general-purpose register named W0 to W30.
See the register name mapping in Figure B1-1.
---
R0~R30 레지스터는 범용 레지스터로 사용된다는 내용인데, 레지스터 저장하는 데이터의 크기에 따라 다음과 같은 방식으로 표기합니다.
● 64비트 크기 데이터를 저장하는 레지스터는 X0~X30로 표기
● 32비트의 데이터를 저장하는 경우 W0~W30으로 표기
대신 프로세스의 실행 흐름을 나타내는 스페셜 기능 레지스터는 PC와 SP입니다.
ARMv8 아키텍처(Aarch64)에서 각 익셉션 레벨 별로 사용되는 레지스터 목록은 다음과 같습니다.
그림 1.5 ARMv8(Aarch64) 아키텍처에 접근되는 레지스터 목록
위 그림에서 표시된 각 레지스터의 주요 기능은 다음과 같습니다.
● XZR, WZR(Zero register): 항상 0이 저장되고 0이 읽히는 레지스터입니다.
● SP_ELn: 모든 익셉션 레벨 별로 존재하는 레지스터입니다. SP_EL0은 익셉션 레벨0(EL0)에서 접근 가능한 스택 포인터 레지스터, SP_EL1은 익셉션 레벨1(EL1)에서 사용되는 스택 포인터 레지스터입니다.
● SPSR(Saved Process Status Register): 익셉션 발생시 현재의 상태 정보를 저장하는 레지스터인 PSTATS 백업하는 기능의 레지스터입니다. EL0을 제외하고 각 EL 레벨별로 존재하며, 각각의 이름은 SPSR_ELn입니다.
● ELP(Exception Link Register): 익셉션이 발생한 다음에 다시 복귀할 코드의 주소를 저장하는 레지스터입니다. EL0을 제외하고 각 EL별로 존재하며 각각의 이름은 ELR_ELn입니다. 즉, EL1에서 접근하는 ELP 레지스터는 ELP_EL1, EL2에서 접근되는 ELP 레지스터는 ELP_EL2입니다.
< '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' 저자>
* 유튜브 소개 영상
'시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 > 1장: Arm 프로세서 소개' 카테고리의 다른 글
[ARM프로세서] 함수 호출 규약(Calling Convention)이란 (0) | 2023.06.10 |
---|---|
[ARM프로세서] ARMv7: ARM 동작 모드란 (0) | 2023.06.10 |
[ARM프로세서] ARMv7 아키텍처의 레지스터 (0) | 2023.06.10 |
[ARM프로세서] 어셈블리 명령어란 (0) | 2023.06.10 |
[ARM프로세서] ARM프로세서, ARM아키텍처, ARM코어란 (1) | 2023.06.10 |