Intel 64 and IA-32 Architectures Software Developers Manual Volume 2A, Instruction Set Reference, A-M

Vol. 2 3-281
INSTRUCTION SET REFERENCE, A-M
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 *)