Search code examples
assemblyx86stackargumentscallstack

Why does pop take a parameter in assembly?


Consider:

popl   %ebp

It seems the %ebp is unnecessary, because the pop operation of stack doesn't need a parameter.

Why does it make sense?


Solution

  • From x86 Assembly Guide:

    pop — Pop stack

    The pop instruction removes the 4-byte data element from the top of the hardware-supported stack into the specified operand (i.e. register or memory location). It first moves the 4 bytes located at memory location [SP] into the specified register or memory location, and then increments SP by 4.

    Syntax
    pop <reg32>
    pop <mem>

    Examples
    pop edi — pop the top element of the stack into EDI.
    pop [ebx] — pop the top element of the stack into memory at the four bytes starting at location EBX.

    Another good reference is x86 Assembly and it is available in PDF form.