언어/어셈블리어

[어셈블리어] x86 아키텍처 ( 32비트 ) 범용 레지스터

program-yam 2025. 2. 15. 19:34

x86 아키텍처에서 사용하는 32비트 범용 레지스터는 다음과 같다.

 

레지스터 용도 및 특징
EAX 누산기 역할, 연산 결과 저장, 반환값 저장
EBX 베이스 레지스터, 상대 주소 계산에 사용
ECX 카운터 레지스터, 루프 및 반복 연산에 사용
EDX 데이터 레지스터, 입출력 연산 및 곱셈 / 나눗셈 결과 저장
ESI 문자열 및 메모리 연산에서 소스 주소로 사용
EDI 문자열 및 메모리 연산에서 목적지 주소로 사용
EBP 스택 프레임의 기준이 되는 베이스 포인터
ESP 스택의 현재 위치를 가리키는 스택 포인터

 

1️⃣ EAX ( 누산기, Accumulator Register ) ( AX 2개로 구성 )

  • 연산( 덧셈, 곱셈 등 ) 결과를 저장하는 기본 레지스터
  • MUL, DIV 연산에서 사용된다.
  • 함수 호출 시 반환 값을 저장한다.

2️⃣ EBX ( 베이스 레지스터, Base Register )

  • 상대 주소 계산에 사용한다.
  • 데이터를 저장하는 일반적인 용도로도 사용 가능하다.

3️⃣ ECX ( 카운터 레지스터, Counter Register )

  • 루프에서 반복 횟수를 저장한다.
  • 시프트 연산에서 이동 횟수를 지정한다.

4️⃣ EDX ( 데이터 레지스터, Data Register )

  • MUL, DIV 연산에서 EAX와 함께 사용된다
  • 입출력 연산에서 포트 번호를 지정한다.

5️⃣ ESI ( 소스 인덱스, Source Index Register )

  • 문자열 및 메모리 연산에서 소스 주소로 사용된다.
  • 반복적인 데이터 이동을 수행한다.

7️⃣ EDI ( 목적지 인덱스, Destination Index Register )

  • 문자열 및 메모리 연산에서 목적지 주소로 사용된다.
  • 반복적인 데이터 저장을 수행한다.

7️⃣ EBP ( 베이스 포인터, Base Pointer )

  • 함수 호출 시 스택 프레임의 기준 주소를 저장한다.
  • 지역 변수 및 함수 매개변수 접근에 사용한다. ( [EBP + offset] )

8️⃣ ESP ( 스택 포인터, Stack Pointer )

  • 현재 스택의 최상단을 가리킨다.
  • 함수 호출( CALL )과 리턴( RET )에서 자동으로 조정된다.
  • PUSH, POP 명령어 사용 시 값이 변경된다.