ESP(Stack Pointer)가 아닌 EBP(Base Pointer)를 사용하여 스택 내의 로컬 변수, 파라미터, 복귀 주소에 접근하는 기법
// 함수 프롤로그
MOV EBP ;EBP를 사용하기 전에 기존의 값을 스택에 저장
MOV EBP, ESP ;현재의 ESP를 EBP에 저장
// 함수 본체
... ; 여기서 ESP가 변경되더라도 EBP가 변경되지 않으므로
... ; 안전하게 로컬 변수와파라미터를 엑세스할 수 있음
// 함수 에필로그
MOV ESP,EBP ;ESP를 정리(= 함수 시작했을 때의 값으로 복원)
POP EBP ;리턴되기 전에 저장해 놓았던 원래 EBP 값으로 복원
RETN ;함수 종료
개인적으로 스택 프레임은 그림으로 본 후 코드를 해석해야 이해가 잘 되었다.
int main(void)
{
func1();
return 0;
}
void func1()
{
func2();
}
void func2()
{
}


출처 - TCPSCHOOL.com