더북(TheBook)

이때 스택 프레임에는 레지스터 중 프로그램 카운터(PC) 값이 쌓입니다. 프로그램 카운터에는 다음에 실행할 인스트럭션의 주소 값이 저장됩니다. 함수가 호출되면 프로그램 카운터가 함수 인스트럭션이 있는 곳을 가리키므로 함수 호출이 끝난 다음 이어서 실행할 인스트럭션을 어딘가에 저장해 둬야 다시 돌아와서 실행할 수 있기 때문입니다.


TIP 그림 9-6에서는 EIP(Extended Instruction Pointer)가 프로그램 카운터인데 32비트 인텔 아키텍처(IA-32)에서는 EIIP를 인스트럭션 포인터라고 부릅니다.


그림 9-7을 보면 ebp가 등장합니다. ebp(extended base pointer)는 프레임 포인터라는 레지스터입니다. 이름이 base pointer인 이유는 인텔 계열에서 프로그램 카운터를 instruction pointer라고 부르는 것처럼 독자적인 이름을 붙인 것입니다. 프레임 포인터는 스택 프레임의 기준이 됩니다. 그래서 이름도 프레임 포인터입니다. 스택 프레임에 있는 지역 변수에 접근할 때도 프레임 포인터를 이용해 접근합니다.

199

그림 9-7 스택 프레임 할당 ③

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.