Arbeitsspeicher und Pointer - Fragen

Fevenius

Newbie
Registriert
Apr. 2013
Beiträge
4
Hallo!
Ich weiss, dass solche grundlegenden Fragen nicht gern gesehen sind, aber ich möchte darauf hinweisen, dass ich mich in anderen Foren erkundigt habe, Bücher ausgeliehen habe und natürlich gegoogelt, doch endgültig
sicher bin ich mir nicht. Berichtigt mich bitte, wenn ich falsch liege:
Eine Anwendung besteht speichertechnisch aus Frames, doch diese werden nur bei Bedarf in den RAM gemappt. Wenn ein Frame in den Speicher gemappt wird bei bspw. 0x400000, so lässt sich die absolute Adresse einer Variablen wie folgt "errechnen": Basisadresse(0x400000)+Offset.
Innerhalb eines Frames sind die Offsets der Variablen immer gleich, egal wo der Frame hingemappt wurde.
Stimmt die Funktionsweise?
Grüße ~Feve
 
Nein.

Zuallererst kommt es auf die CPU an. Normalerweise werden aber z.B. bei x86 CPUs nur pages (4k Blöcke) gemappt von der VM, und Variablen orientieren sich an Segmenten (Segmentregister) die nix direkt mit Pages zu tun haben.

PS: "Frames" kenn ich eigentlich nur vom Stack, also z.B. Stack Frames.
 
Zuletzt bearbeitet:
Ok, Danke. Auf diese Frames Ebene brauche ich eigtl. nicht zu kommen, da mich der RAM nur bzgl. Programmierung interessiert. Aber die globalen/statischen Variablen eines Programms haben relativ zum Modul immer die gleiche Adresse. Wenn also das Haupt Modul (die exe) bei bspw 0x400000 gemappt wird sind die Offsets der globalen/statischen Variablen des vom Modul allokierten Adressraumes immer gleich oder?
 
Zurück
Oben