Arm의 레지스터

YUN·2025년 8월 15일

[기본적인 CS]

목록 보기
11/21

1. CPU 내부에는 레지스터가 존재한다

CPU(Arm core)는 명령어 실행 과정에 임시로 데이터를 저장할 필요가있다. 이런 데이터들을 빠르게 읽고 쓸 수 있는 일종의 메모리가 필요하다.

CPU 내부에 존재하는 이런 메모리레지스터라고한다.

2. Arm의 CPU 에는 16개의 레지스터가 존재한다

ArmCPU(=Arm core) 내부에는 16개의 레지스터가 존재한다.

1. 각 레지스터는 32bit 크기이다.

이 각각의 레지스터들은 몇 비트일까?

ARM의 CPU가 32bit 이므로 레지스터의 크기도 당연히 32bit 이다.

2. 각 레지스터의 역할

(1) R0~R12

R0~R12 까지 총 13개의 레지스터는 범용 레지스터 (General Purpose Register) 이다.

(2) R13 (SP)

R13 은 스택 포인터(SP) 이다.

스택이란?

(1) 개념

스택은 메모리(RAM)에 잡아놓은 임시 저장 공간이다

데이터를 넣고 빼는 규칙이 LIFO (Last In, First Out) 이다.

(2) 사용하는 경우

계산하다가 레지스터가 모자라거나 함수 호출 시 → r0~r12 값을 스택에 복사해둠 → 나중에 다시 꺼내씀

스택 포인터란?

스택(Stack)의 현재 위치를 가리키는 레지스터

참고로, 가리킨다라는 표현은 주소를 저장한다라는 말과 동일하다.

(1) 스택의 현재 위치

스택에 데이터는 연속적으로 저장되는데,

그중 마지막에 저장된 데이터(스택의 맨 위)의 주소를 "현재 위치"라고 함

예를들어,

주소         값
0x2000_0010  빈 공간
0x2000_000C  [ r0 값 ]   ← SP (스택 현재 위치 = 맨 위)
0x2000_0008  [ r1 값 ]
0x2000_0004  [ r2 값 ]
0x2000_0000  [ r3 값 ]

이런 경우 스택의 현재 위치 = 0x2000_000C 이고, SP에는 0x2000_000C 가 저장된다.

(3) R14 (LR)

R14 는 링크 레지스터(LR) 이다.

링크 레지스터란?

함수 호출 시 돌아갈 주소를 저장하는 레지스터

(1) BL (Branch with Link) 명령을 실행하면, 다음 명령의 주소(PC+4)가 자동으로 r14(LR)에 저장됨

(2) 함수가 끝날 때 BX LR 명령으로 LR에 저장된 주소로 복귀함

(4) R15 (PC)

R15 는 프로그램 카운터(PC) 이다.

프로그램 카운터란?

다음 실행할 명령어가 저장된 메모리 주소를 저장하는 레지스터

3. 신기한 사실

ARM 아키텍처에서는

  • 8 bit = byte
  • 16 bit = half-word
  • 32 bit = word

라고 부른다.


마프 열심히 안들었으면 큰 일 날 뻔했다,,,아찔하다,,,

profile
안녕하세요. 전자공학부 학부생의 공부 기록입니다.

0개의 댓글