MIPS R2000
-
Hallo,
ich habe vor kurzen mit dem Studium der techn. Mathematik angefangen und darf gleich mit Info III loslegen:) Nun habe ich ein kleines Verständnisproblem zu einen Code:
.data value1: .word 16 value2: .word 32 value3: .word 48 value4: .word 64 .text main: la $t2, value1 li $t3, 4 lw $t5,($t2) #1? lw $t6,4($t2) #2? lw $t7,value3 #3? lw $t8,value2+4 #4? lw $t9,value1+8($t3) #5? li $v0,10 syscall
Nun soll ich verstehen, was bei den ? passiert. 1 und 3 ist mir halbwegs klar, aber was passiert bei den anderen?
1: (t2)
3: Fast das gleiche wie bei 1, nur das die Adresse bei dem Marker zu finden ist, zudem teilt .word die Adresse von 48 zu?? Bin mir bei den letzten Teil des Satzes nicht sicher...Nebenbei noch, wir arbeiten mit PCSpim an der Uni. Habt nachsicht, falls ich oben vlt. ein bisschen blödsinn geschrieben habe, bin ja noch beim Einstieg;)
Vielen Dank
MfG
Stefan
-
Hallo,
hab nis jetzt nun raus bekommen, was denn in den Zeilen überhaupt gerechnet wird:
Zahlen im Dezimalsystem:
t6=44+16=32
t8=32+44=48
$t9=16+(8*4+4*4)=64Aber nun ist ja immernoch die Frage, warum? Ich hab es mir bis jetzt so vorstellen wollen, dass irgend wie immer 4 Bit dazugezählt werden, aber das genaue System?
MfG
Stefan
-
lw laed den inhalt des speichers an der angegebenen adresse in das register.
deine werte value1-4 sind jeweils 4 byte breit und liegen hintereinander im speicher.also z.b.
lw t2) #2?in $t2 wurde mit la die adresse von value1 geladen.
4 byte weiter steht value2, also wird mit
lw t2) #2?32 nach $t6 geladen.
schau dir einfach an, was jeweiligen befehle machen, dann sollte das verstehen kein problem sein.
-
Danke mips,
nach einiger Zeit hatte es auch bei mir klick gemacht:)
MfG
Stefan