W jaki sposób kompilator określa kod w pamięci
Ok, mam trochę pytania studenta noob.
Wiem więc, że stosy zawierają wywołania podprogramów, a stosy zawierają struktury danych o zmiennej długości, a globalne zmienne statyczne są przypisane do stałych lokalizacji pamięci.
Ale jak to wszystko działa na mniej teoretycznym poziomie?
Czy kompilator po prostu zakłada, że ma cały region pamięci do siebie z adresu 0, aby zająć się nieskończonością? A potem zacznij przypisywać rzeczy?
A gdzie układa instrukcje, stos i stertę? Na górze obszaru pamięci, koniec obszaru pamięci?
Jak to działa z pamięcią wirtualną? Pamięć wirtualna jest przezroczysta dla programu?
Przepraszam za pytania bajilionowe, ale biorę struktury językowe programowania i wciąż odnosi się do tych regionów i chcę je zrozumieć na bardziej praktycznym poziomie.
DZIĘKI z dużym wyprzedzeniem!