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!

questionAnswers(3)

yourAnswerToTheQuestion