popl %ebp
Sembra che lo %ebp
non sia necessario perché l'operazione di stack pop
non richiede un parametro.Perché pop accetta un parametro in assembly?
Perché ha senso?
popl %ebp
Sembra che lo %ebp
non sia necessario perché l'operazione di stack pop
non richiede un parametro.Perché pop accetta un parametro in assembly?
Perché ha senso?
Da http://www.cs.virginia.edu/~evans/cs216/guides/x86.html
pop - Pop stack
L'istruzione pop rimuove il Elemento dati a 4 byte dalla parte superiore dello stack supportato dall'hardware nell'operando specificato (ad es. registro o posizione di memoria). Si muove prima 4 byte situati in posizione di memoria [SP] nella posizione registro o memoria specificata, e quindi incrementa SP per 4.
Sintassi
pop <reg32>
pop <mem>Esempi
pop edi - inserire l'elemento superiore della pila in EDI.
pop [ebx] - inserisce l'elemento superiore dello stack in memoria ai quattro byte iniziando dalla posizione EBX.
Un'altra buona referenza è http://en.wikibooks.org/wiki/X86_Assembly ed è disponibile in PDF form.
Questo parametro imposta destinazione.
Per espandere sulla risposta di Andrey, oltre ad incrementare lo stack pointer sull'elemento spuntato, l'elemento spuntato viene copiato anche ad un indirizzo di destinazione o una nuova registrazione. L'istruzione hai dato è più o meno equivalente alle due istruzioni (sintassi intel)
add esp,4
mov [ss:esp-4],ebp
che credo sia presente in att sintassi (gas)
add $4, %esp
mov %ss-4(%esp), %ebp