Verwirreng wegen Standord der Variablen



  • hi! Titel ist bisschen komisch formuliert.
    Es gibt in asm ja den Code den Stack und Data.
    wenn ich jetzt in c++ schreibe static int i = 10;
    Das wird dann bei den Daten angezeigt im Debugger oder? Aber z. B. int i = 10;
    das liegt ja dann auf dem RAM und nicht im datensagment der exe oder?
    Oder kommen die auf dem Stack?
    Danke!



  • wichtigeFrage schrieb:

    Es gibt in asm ja den Code den Stack und Data.

    Nein. Man unterscheidet idR. allgemein ausfuehrbaren Code, Daten (hier auch noch initialisiert und uninitialisiert) und Stack.
    Je nach System werden diese dann in binaeren Programmdateien (.exe) und im RAM in verschiedenen Segmenten voneinander getrennt.
    In Assembler wird diese Trennung durch die geringe Abstraktion lediglich eher offensichtlich.

    wichtigeFrage schrieb:

    wenn ich jetzt in c++ schreibe static int i = 10;
    Das wird dann bei den Daten angezeigt im Debugger oder?

    Wo das wie angezeigt wird, kommt wohl in erster Linie auf den Debugger an, in zweiter dann auf System, Programmformat, Linker, usw.

    wichtigeFrage schrieb:

    Aber z. B. int i = 10;
    das liegt ja dann auf dem RAM und nicht im datensagment der exe oder?

    Initialissierte Daten des data-Bereichs von .exe-Dateien werden normalerweise beim Laden des Programms ebenfalls in den RAM kopoiert. Von daher kein Unterschied. Ob dieser Wert dann ueberhaupt im data-Bereich der .exe landet oder nicht, haengt dann aber wieder davon ab, ob es sich um eine lokale (die werden idR. dynamisch auf den Stack geladen) oder globale Variable handelt und wie genau das Programm erstellt wurde.



  • endlich kapiere ich es! Ein super mod hier im asm forum! Vielen Dank 🙂


Anmelden zum Antworten