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 [[IA-32]]) ==
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>