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.