Indietro

ⓘ Stack frame



                                     

ⓘ 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.

Free and no ads
no need to download or install

Pino - logical board game which is based on tactics and strategy. In general this is a remix of chess, checkers and corners. The game develops imagination, concentration, teaches how to solve tasks, plan their own actions and of course to think logically. It does not matter how much pieces you have, the main thing is how they are placement!

online intellectual game →