Verwirrung: Wikibooks 2³²



  • Zum Wohle der Allgemeinheit schlage ich vor, diesen Thread zu löschen. Wenn den ein anderer Anfänger findet, würde er mit Sicherheit daran zerbrechen!



  • Safety First Gopher schrieb:

    Zum Wohle der Allgemeinheit schlage ich vor, diesen Thread zu löschen. Wenn den ein anderer Anfänger findet, würde er mit Sicherheit daran zerbrechen!

    ja, wäre gut.



  • warum sprechen eigentlich viele programmierer von "eine variable selbst hat eine adresse und der wert hinter der variable hat eine adresse" wenn dem doch nicht so ist? jetzt ist klar das nicht eine variable eine adresse hat, sondern nur der wert, der hinter einer variable verborgen ist, eine bzw. mehrere adressen hat. 😕



  • Wer sagt das? Eine Variable ist höchstens eine Adresse.



  • +fricky schrieb:

    abc.w schrieb:

    Um die Verwirrung um den 32 Bit Adressbus noch mehr zu verstärken: Wenn man sich das Datenblatt vom 80386 anschaut, findet man "nur" 30 Adressleitungen, also "nur" 30 Bit... 🙂 Wie macht er denn das bloss mit 32 Bit?

    stimmt das? ich dachte, die x86'er wurden von 32 auf 36 adressleitungen aufgemotzt. die älteren modelle 286/386 hatten weniger, 16 der 286'er und 24 der 386'er SX, der DX hatte doch bereits 32 adressleitungen, oder nicht?

    Ja, der 386er DX hat 32 Adressleitungen, nur 30 sind wirklich als Pins da, A2..A31, und die Adressbits A0..A1 werden noch intern dekodiert und erscheinen als 4 "Byte enable" Pins (BE0...BE3)... um noch mehr Leute hier durcheinanderzubringen 😃



  • treppe schrieb:

    warum sprechen eigentlich viele programmierer von "eine variable selbst hat eine adresse und der wert hinter der variable hat eine adresse" wenn dem doch nicht so ist? jetzt ist klar das nicht eine variable eine adresse hat, sondern nur der wert, der hinter einer variable verborgen ist, eine bzw. mehrere adressen hat. 😕

    Ja, das ist alles verwirrend. Manchmal sagt man mir, schlage mal das Buch auf der Seite 25 auf. Das mache ich auch, alles klappt wunderbar. Ich finde die Seite mit der Seitenzahl 25 und wundere mich, warum ist die nächste Seite 26?
    Die könnte doch genauso gut 25 sein, genau wie die Seite, die ich gefunden habe! Und dann frage ich mich immer, warum bekommt jede Seite eine eigene Seitenzahl. Man könnte doch genauso gut gleich 4 Seiten nehmen und sie alle mit der Seitenzahl 25 versehen 😕 Dann hätte ich vier Seiten mit der Seitenzahl 25. Und 25 ist deutlich mehr als 24, aber weniger als 26. Was mache ich bloss falsch 😕



  • im buch ist zwar jede seite adressierbar, wie im ram auch jedes byte. du kannst mit "seite 25" eine seite eindeutig beschreiben. aber du kannst immer nur eine doppelseite aufschlagen und der ansicht zur verfügung stellen, so wie immer nur 4 bytes auf einmal in den prozessor hüpfen können.





  • scherzkekse 🕶 also von mir aus kannst du den thread löschen volkard. stimme da "Safety First Gopher" selber zu.



  • ah, eine frage doch noch schnell: warum kann der pentium 2 64 gb speicher adressieren? der hat doch einen 32 bit adressbus



  • Schau mal im Datenblatt, Pentium 2 hat einen 36 Bit Adressbus...



  • achso stimmt. nur die register grösse betrifft 32 bit. ich sehe gerade die datenbus breite beträgt sogar 64 bit. das erklärt, warum der 36 bit durch den (grösseren) datenbus überhaupt ausgenutzt werden können. sehe ich das richtig? sprich: wenn der datenbus nun 32 bit wäre, dann wären 4 bit von den 36 bit garnicht nutzbar und ergo hätte der prozessor nur eine adressiermöglichkeit von 4 gb?



  • eine blöde frage noch am rande: die prozessorregister sind in ihrer ausführung jeweils auch nur einmalig vorhanden oder? also z.B. das ax register gibt es auch nur einmal mit 32 bit z.B.? das wiederum heisst, jede anwendung die vom prozessor gerade ausgeführt wird, kann auch nur pro takt das gleiche register nutzen oder? angenommen ich schreibe:

    mov ax, 10h ;im register ax ist nun der hexadezimalwert 10 hinterlegt
    mov ax, 20h ;jetzt ist dort der wert 10 nicht mehr sondern 20
    int 21h;
    

    dann ist das so zu verstehen? also vielmehr sinn würde eher sowas machen:

    mov ax, 10h ;im register ax ist nun der hexadezimalwert 10 hinterlegt
    int 21h;
    mov ax, 20h ;jetzt ist dort der wert 10 nicht mehr sondern 20
    int 21h;
    

    damit jeder wert der in ax ist auch einen nutzen hatte? was passiert wenn ich in ein prozessor register mehr als 32 bit schreibe?



  • treppe schrieb:

    sprich: wenn der datenbus nun 32 bit wäre, dann wären 4 bit von den 36 bit garnicht nutzbar und ergo hätte der prozessor nur eine adressiermöglichkeit von 4 gb?

    Nein, so ist es nicht. Das geht irgendwie mit "Physical Address Extension", weiss selbst nicht genau, wie...

    treppe schrieb:

    eine blöde frage noch am rande: die prozessorregister sind in ihrer ausführung jeweils auch nur einmalig vorhanden oder?

    Ja! Zumindest tut die CPU so, als wären die Register für Dich als Programmierer nur einmalig vorhanden...

    treppe schrieb:

    was passiert wenn ich in ein prozessor register mehr als 32 bit schreibe?

    Dann muss es sich bei dem Register um ein Register mit mehr als 32 Bit Breite handeln, anders geht es nicht, weil der Befehlssatz es so nicht unterstützt. So viel Freiheit hast Du da nicht. Der Befehlssatz gibt Dir die Grenzen vor, in denen Du dich bewegen darfst. Der Phantasie aber natürlich sind keine Grenzen gesetzt...



  • treppe schrieb:

    also z.B. das ax register gibt es auch nur einmal mit 32 bit z.B.?

    AX ist ein 16-Bit-Register, aber das nur am Rande. Du meinst vielleicht EAX.


Anmelden zum Antworten