2017-07-26 4 views
-1

Hier ist der Assemblersprachcode für signierten Überlauf zusätzlich zu testen:Wie erkennt diese Assemblersprache einen signierten Überlauf?

addu $t0, $t1, $t2 
xor $t3, $t1, $t2 
slt $t3, $t3, $zero 
bne $t3, $zero, No_overflow 
xor $t3, $t0, $t1 
slt $t3, $t3, $zero 
bne $t3, $zero, Overflow 

was ist die genaue Bedeutung der menschlichen Sprache?

+0

Ist 'addu $ to' angeblich' addu $ t0'? "menschliche Sprache" - Was meinst du damit? Verstehst du nicht, was 'xor' bedeutet? Oder 'bne'? –

+0

Die genaue Bedeutung der menschlichen Sprache ist eine tiefe philosophische Frage und wahrscheinlich nicht das, was Sie fragen wollten. –

+0

Sorry, ich habe nicht die richtige Beschreibung verwendet –

Antwort

2
  • Überlauf tritt nur auf, wenn zwei Zahlen mit demselben Vorzeichen (beide positiv oder beide negativ) hinzugefügt werden. Daher sollte das Ergebnis von operand1 XOR operand2 das Vorzeichen-Bit gelöscht haben (da 0 XOR 0 und 1 XOR 1 beide gleich 0 sind). Das prüft der erste Teil.
  • Der zweite Teil prüft, ob das Vorzeichen des Ergebnisses vom Vorzeichen der Operanden abweicht (hier wird nur operand1 verwendet, da nach dem ersten Teil bekannt ist, dass beide Operanden das gleiche Vorzeichen haben). Wenn das Vorzeichen des Ergebnisses das Vorzeichen der Operanden ist, ist kein Überlauf aufgetreten.
+0

Ahh, also ist dies vorzeichenbehaftet Überlauf (vs unsigned Überlauf, das Übertragsbit (vs Überlauf in der Multiplikation)). –

Verwandte Themen