2017-07-26 26 views
-1

下面是汇编语言代码,除了测试符号溢出:此汇编语言如何检测签名溢出?

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 

什么是人类语言的确切含义是什么?

+0

'addu $ to'应该是'addu $ t0'吗? “人类语言” - 你是什么意思?你不明白'xor'的含义吗?或'bne'? –

+0

人类语言的确切含义是一个深刻的哲学问题,可能不是你打算提出的问题。 –

+0

对不起,我没有使用正确的描述 –

回答

2
  • 只有在添加相同符号的两个数字(正数或负数)时才会发生溢出。因此,operand1 XOR operand2的结果应清除符号位(因为0 XOR 01 XOR 1都等于0)。这是第一部分检查的内容。
  • 第二部分是检查结果的符号是否与操作数的符号不同(这里只使用操作数1,因为我们知道第一部分之后两个操作数具有相同的符号)。如果结果的符号与操作数的符号相同,则不会发生溢出。
+0

啊,所以这是有符号溢出(vs无符号溢出,进位位(vs乘法溢出))。 –