Stack frame
Quando viene richiamata una funzione, diversi elementi vengono inseriti nello stack, in una struttura chiamata stack frame. il registro EBP, chiamato talvolta frame pointer (FP) o vocal base pointer (LB), viene utilizzato per riferirsi a variabili presenti nel frame dello stack corrente.[1]
Ciascuno stack frame contiene i parametri della funzione, le sue variabili locali e due puntatori che sono necessari per ripristinare la situazione iniziale:
- il saved frame pointer (SFP)
- l'indirizzo di ritorno
il SFP viene utilizzato per ripristinare EBP sul suo valore precedente, mentre l'indirizzo di ritorno serve ad impostare EIP all'indirizzo dell'istruzione immediatamente successiva a quella di richiamo della funzione.
Se una funzione venisse richiamata dall'interno di un'altra, un nuovo stack frame verrebbe inserito nello stack e il suo indirizzo di ritorno sarebbe l'indirizzo dell'istruzione successiva al richiamo della funzione chiamata, nella funzione chiamante.
Note
- ^ Erickson, Jon, criptologo., L'arte dell'hacking : le idee, gli strumenti, le tecniche degli hacker, Apogeo, 2004, ISBN 88-503-2280-1, OCLC 799623398. URL consultato il 1º dicembre 2019.