MIPS Unterschied lw und sw

12/30/2015 13:29 _Headsh0t_#1
Hey,
ich hab ein kleines Verständnisproblem bezüglich des Unterschiedes von load_word und store_word in einem MIPS-Register.

Zu meinen Verständnis:
Um beispielsweise etwas in das Register $t1 zu laden macht man lw $t1, 0($s0)
Im Register $t1 steht also die Adresse 0($s0), hinter welcher z.B. das Wort "ABCD" steht, d.h. in $t1 steht die Adresse die auf "ABCD" verweist, richtig?

Würde aber sw $s0, 0($t1) nicht das gleiche machen wie lw $t1, 0($s0)?
sw $s0, 0($t1) speichert doch das was in $s0 steht an die Speicherstelle 0($t1) also 0($t1) = $s0
lw $t1 0($s0) lädt 0($s0) in $t1 also $t1 = 0($s0)

Wahrscheinlich ist das nicht das gleiche, aber wo ist der Unterschied?
12/30/2015 13:55 Jeoni#2
Über lw und sw finden Speicherzugriffe statt.
lw $t1, 0($s0) Lädt das Wort, welches an der Adresse $s0 steht in das Register $t1. C-Pseudocode wäre also:
Code:
t1 = *s0;
// oder
t1 = s0[0];
sw $s0, 0($t1) speichert hingegen den Inhalt des Registers $s0 an die Adresse $t1. C-Pseudocode:
Code:
*t1 = s0;
// oder
t1[0] = s0;
Mit freundlichen Grüßen
Jeoni

P.S.: Thema gehört eher in den General Coding Bereich, weil's hier vorrangig um MIPS Assembler geht. Hab um's Verschieben gebeten.
12/30/2015 14:04 _Headsh0t_#3
Ich habe eine simple Addition und die Summe davon schreibe(bzw lade) ich mit load in ein Register. Nun will mein Programm mit der Summe aber weiterarbeiten, d.h. ich brauche die Summe in meinem Speicher. Also speicher(store) ich den Wert in einer Adresse. Richtig?
12/30/2015 14:13 Jeoni#4
Das Ausführen einer Addition, wobei die Summanden im Speicher stehen und das Ergebnis auch wieder im Speicher stehen soll, liefe so ab:
1.) Summanden mit lw in Register laden.
2.) Register addieren (Befehl: add).
3.) Registerinhalt (also Summe) mit sw in den Speicher schreiben.
Wenn du die Summe schon im Speicher hast und die nur noch laden musst (mit lw), damit du dann damit weiterarbeiten kannst, kann man kaum noch von einer Addition sprechen.
lw -> Wert vom Speicher in ein Register laden, um damit arbeiten zu können.
sw -> Wert vom Register in den Speicher schreiben.

Mit freundlichen Grüßen
Jeoni
12/30/2015 14:15 _Headsh0t_#5
Supi, gecheckt. Danke :)
12/31/2015 11:18 DarkOPM#6
#moved…