Jeśli piszemy procedury w asemblerze i mamy np.
Kod: Zaznacz cały
procdura_1:
         ....
         lcall procedura_2
         ....
         return
        procedura_2:
       ...
       lcall procedura_3
       ....
       return
      procedura_3:
     ........
      return:
Jeśli teraz podobnie byśmy napisali w c z funkcjami
Kod: Zaznacz cały
void f1(void)
{
f2();
}
void f2(void)
{
f3();
}
void f3(void)
{ 
...
}
I pytanie. Czy tak samoo jak w asemblerze są odbładane wartości adreów na stos, czy jest to jakoś rozwiązane inaczej przez kompilator.
Pytam dlatego, że często widzę sposób pisania progeamów w ten sposób, że tworzymy np. funkcję obsługi lcd i w tej funkcji jest wywoływana inna a ta z kolei wywouje jeszcze inna i na dodatek z parametrami.
czy jest tu jakieś niebezpieczeństwo zapełnienia stosu zarówna dla AVR jak i 8051.
 


 Dobrym przykladem tego problemu jest algorytm rekurencyjny np. obliczenia funkcji silnia:
 Dobrym przykladem tego problemu jest algorytm rekurencyjny np. obliczenia funkcji silnia: