Sto giocando con gcc -S
per capire come funzionano la memoria e lo stack. Durante questi spettacoli ho trovato molte cose poco chiare per me. Potresti per favore aiutarmi a capire le ragioni?Perché gcc lo fa quando crea il codice assembler?
Quando si imposta la funzione di chiamata argomenti per un definito uno che utilizza
mov
aesp
invecepush
. Qual è il vantaggio di non utilizzarepush
?La funzione che funziona con gli argomenti di stack situati li indica come
ebp + (N + offset)
(dove N è una dimensione riservata per l'indirizzo di ritorno). Mi aspetto di vedereesp - offset
che è più comprensibile. Qual è la ragione per utilizzareebp
come punto fondamentale ovunque? So che questi sono uguali ma comunque?Cos'è questa magia all'inizio di
main
? Perchéesp
deve essere inizializzato in questo modo solo?and esp,0xfffffff0
Grazie,
Questo potrebbe essere 3 domande separate. Ad ogni modo, la risposta al terzo punto è l'allineamento dello stack. – Mysticial