come principiante di asm, sto controllando il codice asm generato da gcc -S per imparare.perché gcc 4.x riserva di default 8 byte per lo stack su linux quando si chiama un metodo?
perché gcc 4.x riserva di default 8 byte per stack quando si chiama un metodo?
func18 è la funzione vuota senza restituzione nessun parametro nessuna variabile locale definita. Non riesco a capire perché 8 byte sono riservati qui (né alcun forum/sito menzione per il motivo, ppl sembra darlo per scontato) è per il% ebp basta premere? o restituire il tipo ?! molti thx!
.globl _func18
_func18:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
.text
In realtà, nessuna di queste istruzioni ha senso ... una funzione senza variabili locali non dovrebbe aver bisogno di impostare un puntatore del frame – Martin
Probabilmente dipende dal livello di ottimizzazione. Puoi includere il codice generato completo per la funzione? –
Non è questo spazio per l'indirizzo di ritorno e il puntatore dello stack frame? – jdizzle