<<<    Index    >>>
3-355
INSTRUCTION SET REFERENCE
LEAVE—High Level Procedure Exit
Description
This instruction releases the stack frame set up by an earlier ENTER instruction. The LEAVE
instruction copies the frame pointer (in the EBP register) into the stack pointer register (ESP),
which releases the stack space allocated to the stack frame. The old frame pointer (the frame
pointer for the calling procedure that was saved by the ENTER instruction) is then popped from
the stack into the EBP register, restoring the calling procedure’s stack frame. 
A RET instruction is commonly executed following a LEAVE instruction to return program
control to the calling procedure.
Refer to Section 4.5., Procedure Calls for Block-Structured Languages in Chapter 4, Procedure
Calls, Interrupts, and Exceptions of the Intel Architecture Software Developer’s Manual,
Volume 1, for detailed information on the use of the ENTER and LEAVE instructions.
Operation
IF StackAddressSize = 32
THEN
ESP 
<
 EBP;
ELSE (* StackAddressSize = 16*)
SP 
<
 BP;
FI;
IF OperandSize = 32
THEN
EBP 
<
 Pop();
ELSE (* OperandSize = 16*)
BP 
<
 Pop();
FI;
Flags Affected
None.
Opcode
Instruction
Description
C9
LEAVE
Set SP to BP, then pop BP
C9
LEAVE
Set ESP to EBP, then pop EBP
<<<    Index    >>>