to jest możliwe przez stos (zwłaszcza w systemach Intel podobnych). Załóżmy, że mamy metodę caller
, która obejmuje, powiedzmy, int
, która jest przechowywana lokalnie.
Po wywołaniu caller(
wywołania target(
należy zapisać int. Jest on umieszczony na stosie razem z adresem, z którego nawiązano połączenie. target(
może wykonywać swoją logikę, tworzyć własne zmienne lokalne i wywoływać inne metody. Zmienne lokalne zostaną umieszczone na stosie wraz z adresem połączenia.
Po zakończeniu target(
stos jest "rozwijany".Górna część stosu zawierająca zmienne lokalne target(
została usunięta.
Gdy metody powtarzają się zbyt daleko, stos może stać się zbyt duży i może wystąpić "przepełnienie stosu".
Powinieneś przeczytać [to] (http://en.wikipedia.org/wiki/Call_stack#Structure) To jest bardzo dobra odpowiedź: [Rozdział 11 - Procedury] (http: //pages.cs.wisc. edu/~ smoler/x86text/lect.notes/procedures.html) A jeśli lubisz wideo: [Assembly Primer for Hackers (Część 11) Stack funkcji] (http://www.progamercity.net/code-tut/168- assembly-language-primer-hackers-video-series.html) spodoba ci się wszystkie filmy tutaj. –