Топ-100

Stack frame

In informatica, uno stack frame è una zona di memoria del call stack che contiene i dati necessari alla subroutine attualmente in esecuzione.
Esso ha, a sua volta, una struttura a stack pila e contiene, alla sua base, i dati per ripristinare i registri puntatore del processore come ad esempio i registri EBP e ESP nellarchitettura IA-32, facendoli tornare allistruzione immediatamente successiva alla chiamata della funzione in esecuzione, nel flusso del programma principale o della funzione chiamante.

1. Introduzione
Quando un programma compilato viene eseguito su un calcolatore, questo deve allocare della memoria per la sua esecuzione.
La memoria per lesecuzione è una porzione di memoria divisa in zone segmentazione della memoria:
text: che contiene le istruzioni del programma, in linguaggio macchina
data: usato per immagazzinare variabili globali e/o statiche, riempito con variabili globali inizializzate definite in partenza, stringhe e altre costanti che sono usate in tutto il programma.
BSS: usato per immagazzinare variabili globali e/o statiche, contiene le parti corrispondenti alle variabili globali NON inizializzate
stack: utilizzato per tenere traccia dei punti in cui ogni subroutine attiva dovrebbe restituire il controllo quando termina lesecuzione e per le variabili locali e parametri delle funzioni.
heap: utilizzato per le rimanenti variabili di programma
Lo stack o Call Stack viene ulteriormente frammentato con lutilizzo di stack frame, poiché lesecuzione 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.

2. Funzionamento di esempio architettura IA-32
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.
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
lindirizzo di ritorno
il SFP viene utilizzato per ripristinare EBP sul suo valore precedente, mentre lindirizzo di ritorno serve ad impostare EIP allindirizzo dellistruzione immediatamente successiva a quella di richiamo della funzione.
Se una funzione venisse richiamata dallinterno di unaltra, un nuovo stack frame verrebbe inserito nello stack e il suo indirizzo di ritorno sarebbe lindirizzo dellistruzione successiva al richiamo della funzione chiamata, nella funzione chiamante.

uno stack frame all interno dello stack che man mano cresce verso il basso nella struttura descritta sopra, con politica LIFO all interno del frame la
Lo stack pointer ESP è, nelle architetture x86, un registro dedicato alla CPU che contiene l indirizzo della locazione di memoria occupata dal top dello
una subroutine all interno di un call stack è detto frame Il motivo per cui è necessario adottare un call stack è tenere traccia dei punti in cui ogni
queste prodotti. Un frame dello stack di Java è affine a un frame dello stack di un convenzionale linguaggio di programmazione. Ogni frame contiene le informazioni
di vita dell allocazione stessa non dipende dalla procedura o dallo stack frame correnti. Si accede per via indiretta alla regione di memoria allocata
dello stack frame attualmente impiegato ESI - source index usato per le stringhe EDI - destination index usato per le stringhe ESP - stack pointer
Stack degli operandi sia diviso dal Variable Frame i due blocchi vengono pensati come un unica Pila. L indirizzo della parola in cima a questo stack
per stampare dei caratteri x per stampare caratteri esadecimali Lo stack è un area di memoria in cui vengono salvate le variabili locali e i parametri
pila ISO OSI dell architettura di rete di calcolatori. Sotto di esso nello stack sempre nel livello 2 c è il sottolivello MAC, che non è unico, ma dipende
principalmente attraverso l utilizzo di code FIFO o più raramente di stack LIFO Una struttura a coda permette l ottimizzazione della sequenza di