Wie werden Variablen gespeichert?



  • Tag,

    ich hab ein kleines Verständnisproblem:

    int a = 5;
    

    Im Speicher an Adresse XY steht jetzt die 5. Aber woher weiß der Compiler/Der Code/Whatever, dass die 5 vom Typ int ist? Wird das irgendwie gespeichert, wenn ja, wie sieht das aus? Die Adresse muss ja auch irgendwo gespeichert werden, aber wo wird das gemacht?



  • Mr.Malloc schrieb:

    Tag,

    ich hab ein kleines Verständnisproblem:

    int a = 5;
    

    Im Speicher an Adresse XY steht jetzt die 5. Aber woher weiß der Compiler/Der Code/Whatever, dass die 5 vom Typ int ist? Wird das irgendwie gespeichert, wenn ja, wie sieht das aus? Die Adresse muss ja auch irgendwo gespeichert werden, aber wo wird das gemacht?

    Woher der compiler es weiß? Von dir! Du schriebst schließlich int vor a!
    Dadurch weiß der compiler dass er 4 bytes reservieren muss.
    Dies geschieht durch das heruntersetzen vom %esp, dem extenden stack pointer register. Der compiler hat sicherlich interne tabellen in dennen er stehen hat welche variable unter welchem offset (relativ zu %ebp, extended base pointer register der CPU) stehen hat.



  • Und wie greift der Compiler auf die gespeicherten Adressen zu? Denn deren Speicherort hat ja auch ne Adresse, die gespeichert werden muss und dieser Ort hat ebenfalls eine solche Adresse...

    Das verstehe ich nicht, scheint genau so zu sein, wie "Was war zuerst da, der Compiler oder der Code?". 😃



  • Mr.Malloc schrieb:

    Und wie greift der Compiler auf die gespeicherten Adressen zu? Denn deren Speicherort hat ja auch ne Adresse, die gespeichert werden muss und dieser Ort hat ebenfalls eine solche Adresse...

    Das verstehe ich nicht, scheint genau so zu sein, wie "Was war zuerst da, der Compiler oder der Code?". 😃

    Kennst du den Unterschied zwischen Compiler und der ausführbaren Datei die durch den compiler erzeugt wird?



  • autsch, danke



  • Mr.Malloc schrieb:

    autsch, danke

    Die Antwort lautet: Lern Assembler!

    Dann weiße ALLES was da abläuft.


Anmelden zum Antworten