Intel 80287, 80286 manual 2d. Stack Frame for Procedure C at Level 3 Called from B

Models: 80287 80286

1 515
Download 515 pages 45.04 Kb
Page 96
Image 96

EXTENDED INSTRUCTION SET

150

OLDBP BPM

BPM

BPM

BPA

BPAI

BP _

BPM

BPADISPLAY

BPB

DYNAMIC ) STORAGE

SP _

G30108

Figure 4-2d. Stack Frame for Procedure C at Level 3 Called from B

After PROCEDURE A calls PROCEDURE B, ENTER creates a new display for PROCEDURE B with the first word pointing to the previous value of BP, the second word pointing to the value of BP for MAIN, and the third word pointing to the value of BP for A and the last word pointing to the current BP. B can access variables in A and MAIN by fetching from the display the base addresses of the respective dynamic storage areas. See figure 4-2c.

After PROCEDURE B calls PROCEDURE C, ENTER creates a new display for PROCEDURE C with the first word pointing to the previous value of BP, the second word pointing to the value of BP for MAIN, and the third word pointing to the BP value for A and the third word pointing to the current value of BP. Because PROCEDURE B and PROCEDURE C have the same lexical level, PROCE- DURE C is not allowed access to variables in B and therefore does not receive a pointer to the begin- ning of PROCEDURE B's stack frame. See figure 4-2d.

LEAVE (Leave Procedure) reverses the action of the previous ENTER instruction. The LEAVE instruction does not include any operands.

Example: LEAVE. First, LEAVE copies BP to SP to release all stack space allocated to the proce-

dure by the most recent ENTER instruction. Next, LEAVE pops the old value of BP from the stack. A subs~quent RET instruction can then remove anYl1rguments that were pushed

on the stack by the calling program for use by the called procedure.

4-6

Page 96
Image 96
Intel 80287, 80286 manual 2d. Stack Frame for Procedure C at Level 3 Called from B