2010-11-26 8 views
0

Ist diese Aussage gültig?Wie funktioniert Lw in Mips tatsächlich?

lw $t0, 21($s0) 

$s0 enthält das Dezimalsystem 2022.

Meiner Meinung nach ist das ungültig, weil basierend auf dem, was ich weiß, Die Adresse, die durch den Offset + das Register angegeben wird, sollte immer ein multiple of 4 sein. Ist das korrekt oder nicht?

Eine Erweiterung dieser Frage basierend auf der Antwort zur Verfügung gestellt, Die Ausnahme wird nur auf Blick auf die Adresse $s0 oder nach der Berechnung der Adresse 21+$s0?

+0

@Sibi: Sie sollten eine neue Frage für Ihre Zweifel öffnen. – ninjalj

Antwort

3

Die Ausführung dieser Anweisung, wenn $ s0 die Dezimalzahl 2022 enthält, löst eine Ausnahme aus, da die effektive Adresse (2041 = 2022 + 21) nicht korrekt ausgerichtet ist.

+0

Korollar: Der OS-Kernel kann nicht ausgerichtete Zugriffe zu einem sehr signifikanten Leistungsaufwand emulieren (z. B. unter Linux/MIPS, siehe 'arch/mips/kernel/unaligned.c'). – ninjalj