Speicherbelegung RISC-V Prozessor?
Hey, also folgendes ist gegeben:
Die Befehle sind unwichtig.
Ich verstehe noch nicht ganz wie genau die Speicherbelegung funktioniert. Bei Einem 32Bit Prozessor haben wir 32 Byte Wörter bzw 4 byte Wörter. Das bedeutet doch dann im obigen Fall befindet sich an Speicheradresse 0x100 doch zwei Wörter? Oder warum haben wir an der Speicheradresse 8 Bytes? Jetzt verstehe ich z.B bei einem zugriff auf die Speicheradresse 0x110 nicht , welcher Inhalt genommen wird. Wir haben ja einmal 0xfe und 0x15. Weil wir ja die Speicheradresse so interpretieren:
0x108 = 0xf4 , 0x109= 0xbe , 0x110 = 0xfe, ….
jedoch haben wir ja schon eine Speicheradresse 0x110
Hier versteh ich noch nicht ganz wie die Speicherbelegung gemeint ist.
Gruß
Ich habe gesehen, dass eine ähnliche Frage im Forum existiert, jedoch hat diese mir nicht weiter geholfen.
2 Antworten
Links stehen die Adressen, jede Zeiel erhöht sich die Adresse um 8 (Bytes), also müssen folgerichtig pro Zeile 8 BYtes resp. 2 Maschinenwörter stehen. 0x## ist ein Hexbyte, Hexadezimal ermöglich die Darstellugn eines Bytes mit 2 Stellen.
0xc5 (ganz rechts, erste Zeile) liegt dann entsprechend z.B. an Adressse 0x107.
Die Speicheradressen sind auch Hexadezimal, d.h. nach 0x109 folg 0x10a, 0x10b, ... 0x10f, 0x110.
Das bedeutet doch dann im obigen Fall befindet sich an Speicheradresse 0x100 doch zwei Wörter?
An einer Byteadresse befindet sich genau ein Byte. Wenn ein Befehl dort 4 Bytes erwartet, dann nimmt er eben Adresse+0, Adresse+1, Adresse+2, Adresse+3.
Die Darstellung der Speicherbelegung ist einfach so gewählt, dass nicht jedes Byte einzeln mit einer Adresse dargestellt wird. So wie auf einer Landkarte auch nicht Linien für jede Bogensekunde dargestellt werden.
Ah, also wir sind ja im Hexadezimal das heißt 8 Speicherblöcke angefangen bei 0x108 enden bei 0x110. +8 sind ja im Hexadezimal nicht direkt +8. Stimmt das so?
Achso, Danke für die Antwort. Aber wie ist es dann z.b mit 0x110 ?