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
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Achsoo jetzt versteh ich das. Aber auch echt sehr blöd dargestellt. Vielen Dank für die Hilfe !
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Ja, hab schon an meinem Wissen gezweifelt und die Finger wund gegoogelt ..... Danke aber auch dir für die Antwort.