Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B, Instruction Set Reference, N-Z
4-214 Vol. 2B
INSTRUCTION SET REFERENCE, N-Z
Operation
IF StackAddrSize = 64
THEN
IF OperandSize = 64
THEN
RSP
← (RSP − 8);
IF (SRC is FS or GS)
THEN
TEMP = ZeroExtend64(SRC);
ELSE IF (SRC is IMMEDIATE)
TEMP = SignExtend64(SRC); FI;
ELSE
TEMP = SRC;
FI
RSP
← TEMP; (* Push quadword *)
ELSE (* OperandSize = 16; 66H used *)
RSP
← (RSP − 2);
RSP
← SRC; (* Push word *)
FI;
ELSE IF StackAddrSize = 32
THEN
IF OperandSize = 32
THEN
ESP
← (ESP − 4);
IF (SRC is FS or GS)
THEN
TEMP = ZeroExtend32(SRC);
ELSE IF (SRC is IMMEDIATE)
TEMP = SignExtend32(SRC); FI;
ELSE
TEMP = SRC;
FI;
SS:ESP
← TEMP; (* Push doubleword *)
ELSE (* OperandSize = 16*)
ESP
← (ESP − 2);
SS:ESP
← SRC; (* Push word *)
FI;
ELSE StackAddrSize = 16
IF OperandSize = 16
THEN
SP
← (SP − 2);
SS:SP
← SRC; (* Push word *)
ELSE (* OperandSize = 32 *)