ARMv7 아키텍처에서 사용되는 레지스터는 범용과 특별 용도 레지스터로 구분할 수 있습니다. 먼저 범용 레지스터에 대해 살펴봅시다.
 
다음은 ARM 스팩 문서에서 발췌한 내용입니다.
 
출처: DDI0406C_arm_architecture_reference_manual.pdf
 
A2.3 ARM core registers
 
In the application-level view, an ARM processor has:
•  thirteen general-purpose 32-bit registers, R0 to R12
•  three 32-bit registers with special uses, SP, LR, and PC, that can be described as R13 to R15.
 
위 내용은 "R0~R12 레지스터는 범용 용도로 사용되며 SP, LR, PC와 같이 (R13~R15) 레지스터는 특별한 용도로 사용된다"라고 해석할 수 있습니다.
 
범용 레지스터는 어셈블리 명령어를 실행할 때 연산에 주로 사용되며, 주로 데이터를 저장합니다. 대신 스페셜 레지스터는 프로세스의 실행 흐름을 나타내는 역할을 수행합니다. SP, LR, PC 레지스터를 알면 프로세스가 어느 코드까지 실행됐는지 파악할 수 있습니다.
 
다음은 ARMv7 코어에서 사용되는 레지스터 세트를 나타낸 그림입니다.
 

 
그림 1.4 ARM 모드 별로 사용되는 레지스터의 목록
 
위 그림에서 가장 윗 부분에 보이는 User~FIR는 ARMv7에서 지원하는 ARM 동작 모드를 나타냅니다. 이 내용으로 ARM 동작 모드 별로 사용되는 레지스터가 있다는 사실을 추정할 수 있습니다.
 
가장 왼쪽 행을 보면 R0부터 PC까지 흰색 배경으로 표시된 부분이 있는데, 이는 범용으로 사용되는 레지스터 세트를 나타냅니다. 어떤 ARM의 작동 모드에서도 사용할 수 있는 레지스터를 뜻합니다.
 
회식 음영으로 나타낸 레지스터들은 해당 작동 모드에서만 엑세스할 수 있는 레지스터입니다. 다음 표에서 Supervisor 모드, IRQ 모드 그리고 FIQ모드에서 엑세스할 수 있는 레지스터를 확인할 수 있습니다.
 
 
표 1.2 각 모드별 접근 가능한 레지스터의 목록
 
< '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' 저자>
 
 
* 유튜브 소개 영상

+ Recent posts