Stack frame: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
"tornare" permette una migliore comprensione della spiegazione.
aggiunto categorie e voci correlate
Etichette: Rimozione di avvisi di servizio Modifica visuale
Riga 1:
{{A|da contestualizzare meglio|informatica|dicembre 2019}}In informatica, uno '''stack frame''' è una zona di memoria del [[call stack]] che contiene i dati necessari alla subroutine (o funzione) '''''attualmente in esecuzione'''''.
 
Esso ha, a sua volta, una struttura a [[Pila (informatica)|stack]] (pila) e contiene, alla sua base, i dati per ripristinare i registri puntatore del processore (come ad esempio i registri EBP e ESP nell'architettura [[IA-32]]), facendoli tornare all'istruzione immediatamente successiva alla chiamata della funzione in esecuzione, nel flusso del programma principale (o della funzione chiamante).
Riga 12:
* data : usato per immagazzinare variabili globali e/o statiche, riempito con variabili globali inizializzate (definite in partenza), [[Stringa (informatica)|stringhe]] e altre [[Costante (informatica)|costanti]] che sono usate in tutto il programma.
* heap : utilizzato per le rimanenti variabili di programma
*[[Call stack|stack]] : utilizzato per tenere traccia dei punti in cui ogni subroutine attiva dovrebbe restituire il controllo quando termina l'esecuzione e per le variabili locali e parametri delle funzioni.
 
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").
Riga 27:
 
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.
 
== Voci Correlate ==
 
* [[Call stack|Call Stack]]
* [[IA-32]]
* [[linguaggio macchina]]
* [[Segmentazione (memoria)]]
 
==Note==
<references/>
[[Categoria:Informatica]]
 
[[Categoria:Microprocessori Intel]]
{{categorizzare|informatica}}
[[Categoria:Programmazione]]
[[Categoria:Gestione della memoria]]
[[Categoria:Senza fonti - programmazione]]