활성화 레코드의 레이아웃은 구현에 따라 다릅니다. 레코드를 사용하기위한 의사 코드를 보면 예제가 올바른지 알 수 있습니다. 기록의 상단/바닥는 구현에 따라 어느 (당신이 다음 어떤에서했던 것처럼 나에게 바닥을하지만 나는 최고를 사용합니다).
예에서 레코드의 다른 쪽 끝 ("위쪽")을 가리키는 것은 이러한 주소가 항상 STACK[DYNAMIC_LINK_ADDRESS]+1
이기 때문에 불필요합니다. V 예제의 루틴은 매개 변수 또는 지역 변수를 정의하지 않으므로 활성화 레코드가 사용되는 방법을 상상하기 어렵습니다.
각 루틴이 X
및 Y
개의 변수를 정의한 경우 스택은 양수 오프셋을 사용하여 스택에서 매개 변수와 변수를 찾을 수있는 곳을 가리키는 동적 링크와 정적 링크를 모두 포함하는 다음 의사 테이블처럼 보일 수 있습니다. 변수가 로컬이거나 로컬이 아닌 경우 동일한 오프셋이 사용되고 A.X
은 A)에 대한 활성화 레코드의 경우 +02
에 있습니다.
N-17: DL -> 12
N-16: SL -> 07
N-15: B.X
N-14: B.Y
N-13: RET C
N-12: DL -> 07
N-11: SL -> 07
N-10: C.X
N-09: C.Y
N-08: RET A
N-07: DL -> 02
N-06: SL -> 02
N-05: A.X
N-04: A.Y
N-03: RET BITSUB
N-02: BIGSUB.X
N-01: BIGSUB.Y