Intel 253666-024US User Manual

Page 329

Advertising
background image

Vol. 2A 3-283

INSTRUCTION SET REFERENCE, A-M

ENTER—Make Stack Frame for Procedure Parameters

Operation

NestingLevel ← NestingLevel MOD 32

IF 64-Bit Mode (StackSize = 64)

THEN

Push(RBP);
FrameTemp ← RSP;

ELSE IF StackSize

=

32

THEN

Push(EBP);
FrameTemp ← ESP; FI;

ELSE (* StackSize

=

16 *)

Push(BP);
FrameTemp ← SP;

FI;
IF NestingLevel

=

0

THEN GOTO CONTINUE;

FI;

IF (NestingLevel > 1)

THEN FOR i ← 1 to (NestingLevel - 1)

DO

IF 64-Bit Mode (StackSize = 64)

THEN

RBP ← RBP - 8;

Push([RBP]); (* Quadword push *)

ELSE IF OperandSize = 32

THEN

IF StackSize = 32

EBP ← EBP - 4;

Push([EBP]); (* Doubleword push *)

ELSE (* StackSize = 16 *)

BP ← BP - 4;

Push([BP]); (* Doubleword push *)

FI;

FI;

ELSE (* OperandSize = 16 *)

IF StackSize = 32

THEN

EBP ← EBP - 2;

Push([EBP]); (* Word push *)

ELSE (* StackSize = 16 *)

BP ← BP - 2;

Push([BP]); (* Word push *)

Advertising