x86-64( =x64 ) 아키텍처에서 사용하는 64비트 범용 레지스터는 다음과 같다.

 

레지스터 역할 및 설명
RAX 누산기 레지스터, 산술 및 I/O 연산
RBX 베이스 레지스터, 특정 주소 저장
RCX 카운터 레지스터, 루프 및 반복 연산
RDX 데이터 레지스터, 곱셈 / 나눗셈 연산
RSI 소스 인덱스, 문자열 연산시 사용
RDI 목적지 인덱스, 문자열 연산 시 사용
RBP 베이스 포인터, 스택 프레임 관리
RSP 스택 포인터, 현재 스택 주소
R8 추가적인 범용 레지스터
R9 추가적인 범용 레지스터
R10 추가적인 범용 레지스터
R11 추가적인 범용 레지스터( 일반적으로 임시 저장 용도 )
R12 추가적인 범용 레지스터
R13 추가적인 범용 레지스터
R14 추가적인 범용 레지스터
R15 추가적인 범용 레지스터

 

📌 64비트 레지스터 설명

🌙 연산용 레지스터

🔹 RAX (누산기, Accumulator Register)

  • 산술 연산, I/O 연산, 곱셈/나눗셈 연산에서 기본적으로 사용된다.
  • 함수 호출 시 리턴 값을 저장하는 역할 ( return 값 저장 )

🔹 RBX (누산기, Accumulator Register)

  • 데이터를 저장하는 역할을 하며, 메모리 접근 시 특정 값 저장 가능

🔹 RCX (카운터 레지스터, Counter Register)

  • 루프 및 반복문에서 주로 사용된다.
  • LOOP 명령어에서 반복 횟수를 저장하는 역할을 한다.

🔹 RDX (데이터 레지스터, Data Register)

  • 곱셈/나눗셈 연산에서 사용된다.

 

🌙 메모리 및 스택 관련 레지스터

🔹 RBP (베이스 포인터, Base Pointer)

  • 함수 호출 시 스택 프레임 관리
  • 지역 변수 및 함수 매개변수 접근

🔹 RSP (스택 포인터, Stack Pointer)

  • 현재 스택의 최상위 주소를 가리킨다.
  • 푸시( PUSH ), 팝( POP ) 연산에 사용한다.

 

🌙 문자열 연산

🔹 RSI (소스 인덱스, Source Index)

  • 메모리 복사 시 소스 주소를 저장한다.

🔹 RDI (목적지 인덱스, Destination Index)

  • 메모리 복사 시 목적지 주소를 저장한다.

예제

MOV RSI, source ; 소스 주소
MOV RDI, dest ; 목적지 주소
MOV RCX, length ; 복사할 길이
REP MOVSB ; 바이트 단위로 복사

 

+ Recent posts