32 Bit Aligment Befehle im Speicher?
Hey, also irgendwie will ich nicht ganz folgendes verstehen:
Befehle an einen Prozessor werden (oft) in 32 Bit codiert. Also 4 Bytes. Wenn wir jetzt die Adressraumorganisation betrachten, unterscheidet man ja zwischen Byte-/wortadressierung. Ein Speicherzugriff ist ja misaligend, wenn die Byteadresse kein vielfaches von 4 ist. Das heißt wir betrachten die letzten beiden bits und überprüfen ob diese beide 0 sind. Soweit ist für mich alles verständlich. Jetzt hab ich folgende Grafik gefunden :
Betrachtet man jetzt beispielsweise die Byteadresse 0xdd (müsste ja misaligned sein-siehe blaue Makierung) ergibt sich in dual : 11011101. Letzten beiden Bits 01 somit misaligned. Betrachte ich jetzt aber 0xaa müsste es doch aligned sein. In dual : 10101010. Letzten beiden Bits 10 -> misaligned. Warum das?
Hoffe findet sich Hilfe, bin gerade zu blöd um es zu verstehen.
Gruß
2 Antworten
Du verwechselst wohl die Adresse und das, was drin steht.
Ab Byteadresse 4 (oder Wortadresse 1) steht das Wort 0xaabbccdd, ab Byteadresse 12 (oder Wortadresse 3) steht 0x99887766. Das sind einfach Beispieldaten.
Achsoo jetzt versteh ich das. Aber auch echt sehr blöd dargestellt. Vielen Dank für die Hilfe !
Die Grafik ist auch sehr missverständlich.
0xaa, 0xbb . . sind die Inhalte der Speicherzellen, nicht deren Adresse. Die Adressen stehen im "Kleingedruckten" unter "Byteadresse". Die zählt von 0 bis 15 (dezimal).
Böse Falle, selbst ich als geübter Programmierer habe zuerst dumm geguckt.
Ja, hab schon an meinem Wissen gezweifelt und die Finger wund gegoogelt ..... Danke aber auch dir für die Antwort.