如何在MIPS中检测用户输入的数字是否大于4294967295?

问题描述 投票:0回答:1

我想我可以检查是否有溢出,但不确定哪个寄存器将保存标志。我需要通知用户该值太大并重新插入。

我有这个代码:

        .data

binBuffer: .space 20


        .text
main:

        addu $t0, $t0, 4294967298
    
        li $v0, 36
        move $a0, $t0
        syscall
    

但是当我打印它时,它显示数字2,然而,我以为我可以将原始数字与2进行比较,但后来我什至无法存储那么大的数字。

如果数字太大,有什么想法如何通知用户吗?

上面的代码只是一个最小的应用程序,我所做的是将来自控制台的用户输入作为十进制字符串,然后将它们转换为十六进制和二进制。并且从用户处获取的小数也存储到字符串中,然后也转换为以 10 为基数的十进制数

assembly mips mars-simulator
1个回答
0
投票

检测表示整数的字符串以查看它是否适合 32 位并不是 MIPS 特定的问题。

以下是基本方法。

  • 比较字符串的最大值。

  • 使用扩展精度算术,例如 64 位算术。这样,检查数字是否过多(例如 12),或者 64 位数字是否不适合 32 位。

  • 检查所有算术运算中的溢出,这里是×10,还有加法。由于这些都是如此简单的操作,因此可以在操作之前检查是否溢出!否则,如果简单(即 x86)检查后。

© www.soinside.com 2019 - 2024. All rights reserved.