Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Speicherbereiche
Hallo
Es geht um die Aufgabe 5:
http://www3.informatik.uni-erlangen.de/Lehre/GRa/SS2013/gra-ex-03.pdf
Gelöst habe ich sie bereits, nun hätte mich nur interessiert, wie die Lösung in Little-Edian aussehen würde, hat da wer ne Idee?
Das wird nicht ganz funktionieren…
Mit der zweiten Instruktion werden ja die 4 Byte ab Adresse 0x4e34 in Register R2 geladen. In der Big-Endian-Darstellung ist das der Wert 1, bei Little Endian waere es 0x01000000. Nun wird in der dritten Instruktion dieser Wert als Index verwendet – bei der LE-Darstellung wuerde dabei eine Adresse rauskommen, die weit außerhalb des gezeigten Speicherbereichs liegen wuerde.
Ich hätte noch eine Frage:
Ein direct mapped cache hat die größe 2^20 B
Die Adresse ist 32 Bit groß
Pro Eintrag werden 64 Byte Nutzdaten gespeichert.Wie Teilt sich die Adresse auf?
a-ld(b)-ld(s/b) ld(s/b) ld(b)
tag index byte
Das weiß ich ja, aber was ist hier b? Die 64? mich verwirrte hier,dass “pro Eintrag”:
Außerdem:
Bei der Intel Syntax ist ein Hauptspeicherzugriff
mov [2000],1 oder add ebx,4 ?
Woher kommt in dem Fall die 4?
LG
Eigelb
Die 1 und die 4 sind direkt in der Instruktion kodiert und werden also beim Laden der Instruktion direkt geladen. Somit braucht das [m]mov[/m] maximal 2 Hauptspeicherzugriffe (Instruktion und Speicherzugriff) und das [m]add[/m] einen (Instruktion).