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의 삽입 및 삭제 명령어에 의해서 변경되는 스택 가장 위를 가리키는 포인터