mips 中的算术溢出

Den*_*nis 5 mips integer-overflow

我刚刚开始学习 MIPS 指令的异常处理程序。

我需要使我的程序具有算术溢出异常,以便我可以测试我的异常处理程序。

我有两个数组 A 和 B。数组 A 有十六进制数,数组 B 有整数。

如何通过添加十六进制数和整数来使溢出?

哪些十六进制数和整数相加会导致溢出?

Sim*_*zie 5

根据MIPS 指令参考,唯一可能产生溢出异常的加法运算是有符号加法指令:

ADD
ADDI
Run Code Online (Sandbox Code Playgroud)

MIPS 整数是 32 位,并且由于您将使用有符号整数,因此最大值为 2 31 -1(也称为 2147483647 或十六进制 7FFFFFFF)。因此,任何导致大于此数字的加法都会引发异常,例如,如果您尝试将 1 添加到 2147483647:

# Load 2147483647 into $s1
LUI $s0, 32767
ORI $s1, $s0, 65535

# Add 1 to $s1 and store in $s2. This should produce an overflow exception
ADDI $s2, $s1, 1
Run Code Online (Sandbox Code Playgroud)