Call stack: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m incipit
FrescoBot (discussione | contributi)
m Bot: typo
Riga 24:
* '''stack di valutazione''' - Gli [[operandi]] per operazioni aritmetiche e logiche sono spesso inseriti nel [[registro]] e utilizzati là. Comunque, in alcune situazioni gli operandi possono essere accatastati ad una profondità arbitraria, il che significa che deve essere usato qualcosa di più del registro. Lo stack di questi operandi, similmente ai calcolatori di tipo RPN, è chiamato stack di valutazione (evaluation stack) e può occupare spazio nel call stack.
* '''puntatore dell'istanza corrente''' - Alcuni linguaggi orientati agli oggetti (come [[C++]]), immagazzinano questo puntatore come argomento delle funzioni nel call stack quando invocano un metodo. Questo puntatore punta all'istanza dell'oggetto a cui è associato il metodo invocato. È una parte essenziale del contesto di esecuzione di linguaggi orientati agli oggetioggetti, poiché fornisce accesso ai dati posseduti dall'oggetto corrente. Questo puntatore è collegato a livelli utilizzati nella programmazione orientata agli oggetti con livelli (tipi di strutture stack) della run-time call stack.
 
* '''Ambiente dei contenitori di subroutines''' - Alcuni linguaggi di programmazione (come [[Pascal (programmazione)|Pascal]] e [[Ada (programmazione)|Ada]]) supportano [[Funzioni annidate|subroutines annidate]], permettendo ad una routine interna di accedere al contesto della sua routine contenitore, cioè ai parametri e alle variabili locali nell'ambiente della routine esterna. Tali lingue generalmente permettono alle routines di effettuare chiamate ricorsive (la funzione richiama se stessa), ottenendo multiple call stacks per le chiamate di routines delle routines interne, ciascuna delle quali punta sullo stesso ambiente della routine esterna. Questo tipo di call frame è anche conosciuto come ''display''.