Intel 80C188EC User Manual page 418

Hide thumbs Also See for 80C188EC:
Table of Contents

Advertisement

The following listing gives the formal definition of the
ENTER instruction for all cases.
LEVEL denotes the value of the second operand.
Push BP
Set a temporary value FRAME_PTR: = SP
If LEVEL > 0 then
End if
BP:=FRAME_PTR
SP:=SP - first operand
ENTER treats a reentrant procedure as a procedure calling another procedure at the same lexical
level. A reentrant procedure can address only its own variables and variables of higher-level call-
ing procedures. ENTER ensures this by copying only stack frame pointers from higher-level pro-
cedures.
Block-structured high-level languages use lexical nesting levels to control access to variables of
previously nested procedures. For example, assume for Figure A-2 that Procedure A calls Proce-
dure B, which calls Procedure C, which calls Procedure D. Procedure C will have access to the
variables of Main and Procedure A, but not to those of Procedure B because Procedures C and B
operate at the same lexical nesting level.
The following is a summary of the variable access for Figure A-2.
1.
Main has variables at fixed locations.
2.
Procedure A can access only the fixed variables of Main.
3.
Procedure B can access only the variables of Procedure A and Main.
Procedure B cannot access the variables of Procedure C or Procedure D.
4.
Procedure C can access only the variables of Procedure A and Main.
Procedure C cannot access the variables of Procedure B or Procedure D.
5.
Procedure D can access the variables of Procedure C, Procedure A and Main.
Procedure D cannot access the variables of Procedure B.
80C186 INSTRUCTION SET ADDITIONS AND EXTENSIONS
Repeat (LEVEL - 1) times:
BP:=BP - 2
Push the word pointed to by BP
End Repeat
Push FRAME_PTR
Figure A-1. Formal Definition of ENTER
A-3

Advertisement

Table of Contents
loading

This manual is also suitable for:

80c186ec

Table of Contents