mips中的算术溢出

时间:2014-04-23 03:23:00

标签: mips integer-overflow

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

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

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

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

添加哪个十六进制数和整数会导致溢出?

1 个答案:

答案 0 :(得分:3)

根据MIPS instruction reference,唯一可以产生溢出异常的加法操作是签名的加法指令:

ADD
ADDI

MIPS整数是32位,由于您将使用有符号整数,因此最大值为2 31 -1(又名2147483647或hex 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