Hacking/Pwnable
[포너블] 레지스터 역할 및 기능
Cooku222
2025. 5. 15. 22:18
헷갈릴때마다 찾아보기 귀찮아서 따로 정리를 해보았다.
32 비트 기준
EAX
- 피연산자와 연산 결과의 저장소
EBX
- DS segment안의 데이터를 가리키는 포인터
ECX
- 문자열 처리나 루프를 위한 카운터
EDX
- I/O 포인터
ESI
- DS 레지스터가 가리키는 data segment 내의 어느 데이터를 가리키고 있는 포인터. 문자열 처리에서 source을 가리킴
EDI
- DS 레지스터가 가리키는 data segment 내의 어느 데이터를 가리키고 있는 포인터. 문자열 처리에서 destination을 가리킴
ESP
- SS 레지스터가 가리키는 Stack segment의 맨 꼭대기를 가리키는 포인터
EBP
- SS 레지스터가 가리키는 스택상의 한 데이터를 가리키는 포인터
64비트
데이터 레지스터
rax
- 가장 중요한 레지스터로 시스템 콜의 실질적 번호를 가리키는 번호, 함수 결과값이 담기는 레지스터
rbx
- base register로 메모리 주소를 지정할 때 사용
rcx
- 보통 반복문에 사용
rdx
- 데이터 레지스터로 연산 수행할 때 rax와 많이 사용함
포인터 레지스터
rsi
- 메모리를 이동하거나 비교할 때 출발주소를 가리키는 데 사용
rdi
- 메모리를 이동하거나 비교할 때 목적지 주소를 가리키는 데 이용
rbp
- 함수 파라미터나 주소를 가리킬 때 사용
rsp
- stack의 삽입 및 삭제 명령어에 의해서 변경되는 스택 가장 위를 가리키는 포인터