CPU 아키텍처를 배울 때 가장 먼저 레지스터를 접합니다. CPU를 설정하거나 CPU의 속성 정보를 레지스터가 담고 있기 때문입니다. Arm 아키텍처에서 정의된 레지스터를 설명하기 전에 레지스터를 소개합니다.
레지스터를 배우기 어려운 이유
CPU 아키텍처를 처음 배울 때 가장 먼저 무엇을 배울까요? 레지스터를 공부할 가능성이 높습니다. 그런데 Arm 아키텍처나 Arm 프로그래밍을 다루는 대부분의 책은 레지스터의 기능을 상세히 다룹니다. 예를 듭시다.
Armv7 아키텍처에서 정의된 레지스터는 범용 레지스터와 CP15 레지스터로 구성된다.
R13은 스택 포인터 레지스터, R14는 링크 레지스터이다.
이런 내용을 읽고 대부분 레지스터가 너무 어렵다고 느낍니다. 저도 처음 Arm 어셈블리를 배울 때 레지스터 자체를 이해하는데 오랜 시간을 보냈습니다. 시간이 흘러 레지스터가 무엇인지 깨달았을 때 다음과 같은 생각이 문듯 들었습니다.
“누군가 레지스터가 CPU의 변수에 불과하다라는 말을 나에게 해줬으면 얼마나 좋았을까?”
물론 CPU의 변수는 프로그래밍에서 정의된 변수와는 개념 자체가 완전히 다르지만, 레지스터를 쉽고 친근하게 접근하기 위해서는 변수라고 간주해도 좋습니다. 그러면 다음과 같이 생각해 보면 어떨까요?
레지스터는 CPU가 사용하는 변수라서 갯수가 아주 많지는 않다.
그래서 메모리의 힘을 빌려서 연산을 할 수 있다.
C 프로그래밍을 할 때 변수끼리 더하고 빼는 연산하는 것처럼, 어셈블리 명령어를 통해 연산을 할 때 레지스터를 사용해 연산합니다. 레지스터는 CPU의 변수이며, 그 변수끼리 계산할 수 있습니다.
이런 전제 하에 레지스터을 공부하면 더 쉽게 이해할 수 있습니다.
'시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 > 레지스터' 카테고리의 다른 글
| Arm 아키텍처 레지스터 구조 및 기능 소개 (1) | 2025.08.10 |
|---|---|
| Armv8-A 시스템 레지스터 접근 명령어 완벽 정리 (0) | 2023.06.10 |
| Armv8-A 시스템 레지스터 총정리 (0) | 2023.06.10 |
| Armv8-A SPSR_ELx: Saved Program Status Register 개념과 활용 (0) | 2023.06.10 |
| Armv8-A 스페셜 레지스터 종류와 특징 (0) | 2023.06.10 |