본문 바로가기
공부,일/어셈블리

ch 6 . Procedures

by fromnothing1 2021. 9. 8.

push & pop

push

pop, push 는 다른레지스터는 건드릴수 있지만 EFL 의 경우 전용 명령어를 사용해야 한다. 

 

모든 레지스터 값을 스택에 넣는 명령어 (플레그 레지스터 제외)

동작하는 프로그램이 변경될때 원래 동작되던 프로그램의 레지스터의 정보를 저장할 필요가 있다. 

레지스터의 정보는 스택에 저장하는데 이를 위한 명령어가 위의 pusha, popa 명령어 이다. 

 

함수 호출 , 리턴

EIP : 간접적으로 값 변경가능 

jmp(지정한 코드로 점프),

call(EIP 에 있는 주소의 다음 주소를 스택에 저장한다. ),(프로시저로 점프)

ex) call Smart 

1. push next주소 

1-1. sub esp , 4

1-2 mov [esp], eip

2. jmp Smart 

 

ret(스택에 있는 주소를 EIP 에 저장한다.)

 

ex) ret 

 

1. pop eip : 스택에 저장된 리턴 어드레스를 eip에 저장 

1-1 . mov eip, esp 

1-2 . add esp, 4

 

 

 

 

'공부,일 > 어셈블리' 카테고리의 다른 글

Branching and Looping  (0) 2021.09.01
add & sub LargeNumber  (0) 2021.08.31
mul,imul  (0) 2021.08.31
덧셈 뺄셈 숙제 코드  (0) 2021.08.26
여러가지 어셈블리 명령어  (0) 2021.08.25

댓글