我刚开始学习MIPS指令的异常处理程序。
我需要让我的程序有算术溢出异常,以便我可以测试我的异常处理程序。
我有两个数组A和B.数组A有十六进制数,数组B有整数。
如何通过添加十六进制数和整数来溢出?
添加哪个十六进制数和整数会导致溢出?
答案 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