此汇编语言如何检测签名溢出?

时间:2017-07-26 02:45:00

标签: assembly mips add

此外,还有用于测试签名溢出的汇编语言代码:

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

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

1 个答案:

答案 0 :(得分:2)

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