C ++ (zagnieżdżone) instrukcje wywołania funkcji - rejestry
WC ++ FAQ:
Zakładając typową implementację C ++, która ma rejestry i stos, rejestry i parametry są zapisywane na stosie tuż przed wywołaniem g (), następnie parametry są odczytywane ze stosu wewnątrz g () i odczytywane ponownie w celu przywrócenia rejestrów podczas g () powraca do f ().
dotyczące zagnieżdżonego wywołania funkcji
void f()
{
int x = /*...*/;
int y = /*...*/;
int z = /*...*/;
...code that uses x, y and z...
g(x, y, z);
...more code that uses x, y and z...
}
1 / Czy wszystkie implementacje C ++ mają rejestry i stos? Czy to znaczy: implementacja zależy od kompilatora / procesora / architektury komputera?
2 / Jaka jest sekwencja instrukcji (bez języka asemblera, tylko duży obraz), gdy dzwonięf()
? Czytałem rozbieżne rzeczy na ten temat, a także nie pamiętam, że rejestrów, o których mowa, ale tylko stos.
3 / jakie dodatkowe cechy / punkty należy podkreślić, gdy masz do czynienia z funkcjami zagnieżdżonymi?
dzięki