Operation

level  level MOD 32
2ndOperand <- 2ndOperand MOD 32
IF operand_size = 16 THEN Push(bp) ELSE Push(ebp) FI;
IF stkSize = 16 THEN framePtr = sp ELSE framePtr = esp FI;
FOR i  1 TO (2ndOperand - 1)
DO
IF oprand_size = 16
THEN
IF stkSize = 16
THEN
bp = bp - 2
Push([bp]) (* word push *)
ELSE (* stkSize = 32 *)
ebp = ebp - 2
Push([ebp]) (* word push *)
FI;
ELSE (* operand_size = 32 *)
IF stkSize = 16
bp = bp - 4
Push([bp]) (* doubleword push *)
ELSE (* stkSize = 32 *)
ebp = ebp - 4
Push([ebp]) (* doubleword push *)
FI;
FI;
OD;
IF stkSize = 16
THEN Push(framePtr); (* word push *)
ELSE Pushd(framePtr); (* doubleword push *)
FI;
IF stkSize = 16
THEN
bp = framePtr
sp = sp - 1stOperand
ELSE
ebp = framePtr
esp = esp - 1stOperand
FI;


[Back: Description]
[Next: Protected Mode Exceptions]