본문 바로가기

IT전공관련

함수 프롤로그, 에필로그, 스택 프레임 조사

함수 프롤로그, 에필로그, 스택 프레임 조사


먼저 함수 프롤로그는 해당하는 함수 실행 준비 과정을 말하고, 에필로그는 함수 실행을 마무리 하는 프롤로그의 반대 과정이라고 말할 수 있다.

지금까지는 정의들을 설명했고, 함수 호출과정을 통해 함수 프롤로그와 에필로그를 설명하자면,

>> 함수의 호출 과정 <<

1.인자를 스택에 집어 넣는다.

2.함수를 호출한다.

3.프레임 포인터를 설정한다.

4.로컬 변수를 위한 공간을 할당한다.

5.호출한 함수의 실행 상태를 보존한다.

6.함수를 실.행한다.

7.호출한 함수의 실행 상태를 복구한다.

8.스택을 정리하고, 프레임 포인터를 복구한다.

9.함수로부터 돌아간다

10.스택에 집어넣은 인자를 정리한다.

여기서 1~5과정이 프롤로그고, 7~10과정이 에필로그다.


프롤로그에서 쓰이는 어셈블리어 >> 

push ebp:이전 스택의 베이스 주소 저장

mov ebp, esp: 현재 스택의 첫주소를 새로운 스택의 베이스로 설정


에필로그에서 쓰이는 어셈블리어 >>

mov esp, ebp: 베이스 주소를 이전의 스택으로 되돌림

pop ebp:베이스 포인터 복구


그다음 스택 프레임의 대해 말하자면,

스택 프레임(Stack Frame) 이란?

함수 호출시 할당되는 메모리 블록
(지역변수의 선언으로 인해 할당되는 메모리 블록)

함수가 호출될 때 스택에는 함수로 전달되는 인자, 실행을 마치고 돌아올 복귀 번지지역 변수등의 정보들이 저장된다. 이때 스택에 저장되는 함수의 호출 정보를 스택 프레임이라고 한다. 또한 함수 실행중에도 필요할 경우 임시적인 정보 저장을 위래 스택을 사용하되 이때 PUSH 함수와 POP 함수는 일치하므로 함수가 리턴하면 정확하게 호출 전의

상태로 돌아가 항상성을 유지한다.

, 함수가 호출될 때 인수와 복귀 번지, 지역변수 영역등을 가진 스택 프레임이 생성되고 리턴된 후 정확하게 복구하도록 되어있다.

 

'IT전공관련' 카테고리의 다른 글

x86 CPU 레지스터 조사  (1) 2017.07.17
시스템 메모리 구조 조사 및 설명  (0) 2017.07.17
세계전략 포럼  (0) 2017.07.03
Layer 7 개인 프로젝트 보고서  (0) 2017.05.21
개인 프로젝트  (0) 2017.05.17