Funzione (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
WND
Riga 92:
 
== Implementazione ==
Nella programmazione le funzioni sono uno strumento talmente importante e diffuso da richiedere una gestione della loro esecuzione estremamente efficiente allo scopo di mantenere bassi i tempi di chiamata della funzione e di ritorno del controllo al programma chiamante. Per questo motivo la gestione dell'allocazione delle variabili locali e del passaggio dei parametri vengono normalmente supportate direttamente dall'[[hardware]]. L'esistenza dello [[stack]] nelle architetture hardware è appunto riconducibile alla necessità di supportare efficientemente le funzioni. Infatti, quando viene invocata una funzione il punto del codice in cui è stata invocata viene salvato sullo stack ('''indirizzo di ritorno'''), e anche i parametri e le variabili locali di una funzione vengono salvati sullo stack.
 
L'insieme di questi dati sullo stack è detto ''record''record di attivazione''', e rappresenta una funzione in fase di esecuzione, che può essere sospesa in attesa del completamento di un'altra funzione che a sua volta ha invocato.
 
Il ''record'' di attivazione in cima allo stack è quello della funzione attualmente in esecuzione, sotto c'è quello della funzione che l'ha chiamata, e così via.
 
Lo stack può essere usato anche in altri modi, ad esempio per memorizzare temporaneamente valori intermedi nella valutazione delle espressioni aritmetiche.