Stack frame: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m smistamento lavoro sporco e fix vari |
mNessun oggetto della modifica |
||
Riga 17:
Lo stack (o [[Call stack|Call Stack]]) viene ulteriormente frammentato con l'utilizzo di stack frame, poiché l'esecuzione del programma non è più lineare nel momento stesso in cui viene richiamata una funzione. Questa deve seguire il suo flusso di comandi, residenti in indirizzi di memoria non sequenziali rispetto a quelli del programma "chiamante". Si crea quindi la necessità di uno "stack nello stack", perché la funzione possa seguire il suo flusso e, terminando, permettere al processore di riprendere il flusso del programma principale laddove si era interrotto (all'indirizzo, quindi, del comando immediatamente successivo a quello di chiamata della funzione, in assembly: "call").
== Funzionamento di esempio (architettura
Quando viene richiamata una funzione, diversi elementi vengono inseriti nello stack, in una struttura chiamata '''stack frame'''. il [[IA-32|registro]] EBP, chiamato talvolta ''frame pointer'' (FP) o ''local base pointer'' (LB), viene utilizzato per riferirsi a variabili presenti nel frame dello stack corrente.<ref>{{Cita libro|cognome=Erickson, Jon, criptologo.|titolo=L'arte dell'hacking : le idee, gli strumenti, le tecniche degli hacker|url=https://www.worldcat.org/oclc/799623398|accesso=1º dicembre 2019|data=2004|editore=Apogeo|oclc=799623398|isbn=88-503-2280-1}}</ref>
|