Die SW- und LW-Befehle sind wie folgt definiert:
sw $t, offset($s) : 1010 11ss ssst tttt iiii iiii iiii iiii
lw $t, offset($s) : 1000 11ss ssst tttt iiii iiii iiii iiii
SW führt die Operation MEM[$s + offset] = $t durch, aber im Datenpfad sieht es so aus, als hätten sie die Operation MEM[Data($s)+ offset] = $t durchgeführt, weil statt den Wert $ zu nehmen s als Eingabe in die ALU nahm sie die in $s gespeicherten Daten auf.
LW führt die Operation $t = MEM[$s + Offset] aus, aber wenn man sich den Datenpfad ansieht, sieht es so aus, als würde es $t = MEM[Data($s) + Offset] ausführen.
Eine andere Sache, die ich nicht verstehe, ist, warum wir die Vorzeichenerweiterung verwenden, anstatt nur das Vorzeichen auf das 32. Bit zu verschieben und den Rest der Daten mit Nullen zu füllen. Wenn Sie einen Offset definiert haben, ist
0x8fff : 1000 1111 1111 1111
es wird Zeichen erweitert zu 0xffff8fff : 1111 1111 1111 1111 1000 1111 1111 1111 , was eine völlig andere Zahl als der Offset ist, die Zahl, die wir wirklich brauchen, ist 0x80008ffff.
$s
und $t
sind Registerbezeichner. Ihre Interpretation MEM[RegisterData(s) + offset]
ist grundsätzlich richtig. $s
bedeutet im Wesentlichen "die Daten aus der Registernummer s
in der Registerdatei abrufen". Wenn also s
in der Anweisung das Bitmuster steht 10001
, dann $s
bedeutet das: Lesen Sie den Wert aus Register 17, fügen Sie die vorzeichenerweiterten Offset-Bits hinzu (die 16 Bits, die in i
der Codierung durch dargestellt werden), und verwenden Sie diese als Adresse für den Zugriff auf den Speicher. Ähnlich für die $t
in der lw
Anleitung. Das bedeutet, dass die Daten in das Register mit der Nummer zurückgeschrieben werden t
.
Ihre Frage zur Vorzeichenerweiterung: Zweierkomplement nachschlagen . Die 16-Bit-Zweierkomplementzahl 0000 1111 1111 1111 ist dezimal +4095. Die 16-Bit-Zweierkomplementzahl 1000 1111 1111 1111 ist dezimal -28673. Die 32-Bit-Zweierkomplementzahl 0xffff8fff ist ebenfalls -28673. Die 32-Bit-Zweierkomplementnummer 0x80008fff ist dezimal -2147446785, was eindeutig nicht das ist, was Sie wollen.