popl %ebp
Parece que el %ebp
es innecesario porque la operación pop
de la pila no necesita un parámetro.¿Por qué pop toma un parámetro en ensamblaje?
¿Por qué tiene sentido?
popl %ebp
Parece que el %ebp
es innecesario porque la operación pop
de la pila no necesita un parámetro.¿Por qué pop toma un parámetro en ensamblaje?
¿Por qué tiene sentido?
De http://www.cs.virginia.edu/~evans/cs216/guides/x86.html
pop - Pop stack
La instrucción pop quita el Elemento de datos de 4 bytes desde la parte superior de la pila compatible con hardware en el operando especificado (es decir, ubicación de registro o memoria). Es primero mueve los 4 bytes situados en la posición de memoria [SP] en la ubicación de registro o de memoria especificada, y luego incrementa SP por 4.
Sintaxis
pop <reg32>
pop <mem>Ejemplos
pop edi: abre el elemento superior de la pila en EDI.
pop [ebx]: inserte el elemento superior de la pila en la memoria en los cuatro bytes comenzando en la ubicación EBX.
Otra buena referencia es http://en.wikibooks.org/wiki/X86_Assembly y está disponible en PDF form.
este parámetro establece el destino.
Para ampliar la respuesta de Andrey, además de incrementar el puntero de pila sobre el elemento reventado, el elemento reventado también se copia a una dirección de destino o registro. La instrucción que dio es más o menos equivalente a las dos instrucciones (sintaxis Intel)
add esp,4
mov [ss:esp-4],ebp
que creo que es esto en att sintaxis (gas)
add $4, %esp
mov %ss-4(%esp), %ebp