Database & SQL

[Memory] 함수의 프롤로그(Prolog)와 에필로그(Epilog)

YEJI ⍢ 2022. 7. 22. 17:20
728x90

 

스택 프레임에는 함수의 영역을 표현하는 부분이 있습니다.

함수가 시작할 때는 프롤로그(Prolog), 끝날 때에는 에필로그(Epilog)가 실행됩니다.

 

함수의 프롤로그와 에필로그에 대해서 자세히 알아보겠습니다.

 

 

함수의 프롤로그는 

push ebp

mov ebp, esp 

의 구조를 가지고 있습니다. 

 

함수 프롤로그는 함수가 호출되면 그 함수의 영역을 설정하기 위한 것입니다.

함수가 시작되면 스택프레임이 형성되고 그 시작을 함수 프롤로그라고 합니다. 

 

 

 

함수의 에필로그는 

leave

(mov esp, ebp

pop ebp)

ret

(pop eip

jmp eip)

 

의 구조를 가지고 있습니다.

 

함수 에필로그는 함수가 종료되어 자신을 호출했던 함수로 돌아갈 때 스택을 정리하기 위한 것입니다.

 

 

◡̈