Ciò è reso possibile dallo stack (soprattutto sui sistemi Intel-like). Diciamo che abbiamo un metodo caller
che include, per esempio, uno int
che mantiene localmente.
Quando caller(
chiama target(
che int deve essere salvato. Viene messo in pila, insieme all'indirizzo da cui è stata effettuata la chiamata. target(
può eseguire la sua logica, creare le proprie variabili locali e chiamare altri metodi. Le sue variabili locali saranno posizionate sullo stack insieme all'indirizzo della chiamata.
Quando target(
termina, lo stack è "srotolato".La parte superiore della pila contenente le variabili locali di target(
viene rimossa.
Quando i metodi vengono inoltrati troppo lontano, la pila potrebbe diventare troppo grande e potrebbe verificarsi uno "overflow dello stack".
Si dovrebbe leggere [this] (http://en.wikipedia.org/wiki/Call_stack#Structure) Questa è una risposta molto buona: [Capitolo 11 - Procedure] (http: //pages.cs.wisc. edu/~ smoler/x86text/lect.notes/procedures.html) E se ti piace Video: [Assembly Primer for Hackers (Part 11) Functions Stack] (http://www.progamercity.net/code-tut/168- assembly-language-primer-hackers-video-series.html) ti piaceranno tutti i video qui. –