프로그래밍 언어론 · 9강

서브프로그램 구현

함수를 부르고 돌아오는 일이 메모리에서 실제로 어떻게 이루어지는지를 봅니다. 호출마다 스택에 쌓이는 칸에 무엇이 들어 있고, 바깥 함수의 변수는 어떻게 찾아가는지를, 프로그래밍을 한 번쯤 해 본 사람을 위해 9편으로 나눠 따라갑니다.

  1. 1함수를 부르면 무슨 일이 일어날까?호출과 반환, 서브프로그램 연결
  2. 2호출 한 번에 무엇을 기억해 둘까?단순 서브프로그램, 활성 레코드와 인스턴스
  3. 3왜 재귀가 안 됐을까?활성 레코드 세 영역, 정적 할당
  4. 4호출마다 쌓는 칸에는 무엇이 들어갈까?스택 동적 지역 변수, 환경 포인터, 동적 링크
  5. 5부른 쪽과 불린 쪽은 일을 어떻게 나눌까?호출자 동작, 프롤로그, 에필로그
  6. 6쌓인 스택에서 내 변수는 어디 있을까?동적 체인, 지역 오프셋, 재귀
  7. 7바깥 함수의 변수는 어떻게 찾을까?중첩 서브프로그램, 정적 링크, 정적 체인
  8. 8정적 링크는 누가 이어 줄까?정적 체인의 유지와 평가
  9. 9중괄호 안의 변수는 어디에 둘까?블록, 동적 스코프 구현, 정리

내용과 예제는 Robert W. Sebesta의 《Concepts of Programming Languages》 12판 10장을 따랐습니다.