언어/어셈블리어
[어셈블리어] 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 명령어 사용 시 값이 변경된다.