我正在学习MIPS组装。我已阅读以下内容:"两个MIPS乘法指令都忽略溢出,因此由软件检查产品是否太大而不适合32位。如果Hi为0表示multu或者复制符号为Lo for mult"则没有溢出。在http://opencourseware.kfupm.edu.sa/colleges/ccse/ics/ics233/files/5_Lab7.pdf。
如何在MIPS中测试整数乘法溢出?
答案 0 :(得分:1)
对于multu
(乘以无符号),a,b ≥ 0
和(a+b) > b
。如果a和b是寄存器$8
和$9
中的数字,那么你可以(但我还没有尝试在SPIM中运行它)在代码$10
中捕获溢出:
add $8, $8, $9
slt $11, $9, $0 //set $11 if b is less than 0
slt $10, $8, $9 //set $10 if (a+b) is less than b
xor $10, $10, $11
我希望它有效吗?或者我们可以尝试运行MIPS代码。