Warum würden wir addiu statt addi?
In MIPS assembly, was ist der Vorteil der Verwendung von addiu
über addi
? Nicht addiu
unsigned (und ruinieren unsere Berechnungen?)
Du musst angemeldet sein, um einen Kommentar abzugeben.
In MIPS assembly, was ist der Vorteil der Verwendung von addiu
über addi
? Nicht addiu
unsigned (und ruinieren unsere Berechnungen?)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, MIPS verwendet Zweierkomplement, damit Sie die gleiche Anweisung für die addition/Subtraktion kann für beide verwendet werden signierte und unsignierte Operationen. Es gibt keinen Unterschied im Ergebnis.
Das gilt auch für die bitweise Anweisungen, die nicht-Erweiterung der Multiplikation, und viele andere Operationen. Sehen
Der einzige Unterschied zwischen Ihnen ist, dass
addi
generiert einen trap, wenn überlauf beiaddiu
nicht. Soaddi
und dessen überlauf-Familie (add
,sub
...) ist oft nutzlos. In der Tat ist es so selten genutzt, dassaddi
wurde entfernt MIPSr6 zum release wertvolle opcode-Platz, um andere AnweisungenHier die Anweisung name ist extrem irreführend, weil es nicht eigentlich ein "unsigned" - Zusatz. Die unmittelbare noch Zeichen erweitert statt der null erweitert. So
addiu $1, $2, 0xFFFF
tatsächlich subtrahieren Sie 1 von$2
anstatt 65535 zu.Lesen Sie mehr Unterschied zwischen add und addu
addiu $1, $2, 0xFFFFFFFF
sollte subtrahieren 1 von$2
, und mit0xFFFF
sollte nur hinzufügen, dass der Betrag (solange es passt natürlich). Oder bin ich da falsch?addiu
Falladdi
fallen), aber unsigned overflow ist definiert als Verpackung (dieaddiu
implementiert). Natürlich, viele Compiler wählen, auch tatsächlich umzusetzen, Verpackung Semantik für Ganzzahlen mit Vorzeichen zu, und verwenden Sieaddu
/addiu
für alles. Es ist immer noch ein komisches Namenskonvention, aber das ist, wie zu erinnern, wie Sie funktionieren und warum es Sinn macht, dass es hat nichts zu tun mit, wie die 16-bit-sofortige behandelt wird.