我想我可以检查是否有溢出,但不确定哪个寄存器将保存标志。我需要通知用户该值太大并重新插入。
我有这个代码:
.data
binBuffer: .space 20
.text
main:
addu $t0, $t0, 4294967298
li $v0, 36
move $a0, $t0
syscall
但是当我打印它时,它显示数字2,然而,我以为我可以将原始数字与2进行比较,但后来我什至无法存储那么大的数字。
如果数字太大,有什么想法如何通知用户吗?
上面的代码只是一个最小的应用程序,我所做的是将来自控制台的用户输入作为十进制字符串,然后将它们转换为十六进制和二进制。并且从用户处获取的小数也存储到字符串中,然后也转换为以 10 为基数的十进制数
检测表示整数的字符串以查看它是否适合 32 位并不是 MIPS 特定的问题。
以下是基本方法。
比较字符串的最大值。
使用扩展精度算术,例如 64 位算术。这样,检查数字是否过多(例如 12),或者 64 位数字是否不适合 32 位。
检查所有算术运算中的溢出,这里是×10,还有加法。由于这些都是如此简单的操作,因此可以在操作之前检查是否溢出!否则,如果简单(即 x86)检查后。