popl %ebp
It seems the %ebp
is unnecessary because the pop
operation of stack doesn't need a parameter.
Why does it make sense?
popl %ebp
It seems the %ebp
is unnecessary because the pop
operation of stack doesn't need a parameter.
Why does it make sense?
To expand on Andrey's answer, in addition to incrementing the stack pointer over the popped element, the popped element is also copied to a destination address or register. The instruction you gave is more or less equivalent to the two instructions (intel syntax)
add esp,4
mov [ss:esp-4],ebp
which I think is this in att (gas) syntax
add $4, %esp
mov %ss-4(%esp), %ebp
From http://www.cs.virginia.edu/~evans/cs216/guides/x86.html
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 http://en.wikibooks.org/wiki/X86_Assembly and it is available in PDF form.