System Hacking/어셈블리 언어

push & pop & pushad

zz! 2025. 7. 4. 16:14
728x90

push

스택에 값을 저장한다. push 후에는 스택이 4바이트 커지기 때문에 esp 레지스터는 4바이트 감소한다.

(스택은 높은 주소에서 낮은 주소로 할당되기 때문에)

PUSH EBP // EBP의 값을 스택에 PUSH

push 5 // 5를 스택에 PUSH

 

POP

PUSH와는 반대로 스택의 끝에 저장된 값을 가져온다. POP 후에는 스택이 4바이트 줄어들기 때문에 ESP 레지스터가 4바이트 증가한다. 

POP EBP // 스택 끝의 값을 꺼내서 EBP에 저장

POP ECX // 스택 끝에 값을 꺼내서 ECX에 저장

 

pushad

범용 레지스터의 값들을 스택에 저장하는 명령어 OPERAND가 없다. 스택에는 레지스터의 값이 차례대로 저장된다.

저장되는 순서는 eax -> ecx -> edx -> ebx -> esp -> ebp -> esi -> edi

728x90