MIPS:我可以通过syscall从用户处获取未签名的int值吗?
这个标题大致概括了这一点。我正在用32位MIPS汇编语言(使用MARS模拟器)为一个学校项目编写一个程序,并且我在int values>2147483647中的读取率为零 我花了相当多的时间在网上和书中搜寻,但都没有用。这不是作业的核心(如果你碰巧知道这是不可能的,你可能已经意识到),但好奇心正在杀死这只猫。既然我撞到了这堵砖墙,我肯定知道 注:MIPS:我可以通过syscall从用户处获取未签名的int值吗?,mips,system-calls,unsigned-integer,mips32,Mips,System Calls,Unsigned Integer,Mips32,这个标题大致概括了这一点。我正在用32位MIPS汇编语言(使用MARS模拟器)为一个学校项目编写一个程序,并且我在int values>2147483647中的读取率为零 我花了相当多的时间在网上和书中搜寻,但都没有用。这不是作业的核心(如果你碰巧知道这是不可能的,你可能已经意识到),但好奇心正在杀死这只猫。既然我撞到了这堵砖墙,我肯定知道 注: 我特别想寻找一种方法来获取无符号int,而不是采用浮点或双精度 使用syscall获取int的标准代码: li $v0, 5 syscall move
li $v0, 5
syscall
move $t0, $v0
Error in C:\DEV\....... line 57: Runtime exception at
0x004000034: invalid integer input (syscall 5)
帮助我欧比万,你是我唯一的希望 您需要使用不同的系统调用——MARS正在抛出异常,而不是MIPS CPU中的任何内容。例如,尝试系统调用8或12(读取字符串和读取字符)。请注意,结果是,您必须自己实现更多的解析才能使这些工作正常进行 或者,您可以尝试读取double(syscall 7)并将其转换为整数 以下是MARS系统调用的完整在线列表:
您需要使用一个不同的系统调用——MARS抛出异常,而不是MIPS CPU中的任何东西。例如,尝试系统调用8或12(读取字符串和读取字符)。请注意,结果是,您必须自己实现更多的解析才能使这些工作正常进行 或者,您可以尝试读取double(syscall 7)并将其转换为整数 以下是MARS系统调用的完整在线列表:
关于异常的来源,这是一个很好的观点。至于建议要么读入字符串并解析值,要么使用不同的数字格式——我已经考虑过这一点,如果这是作业的核心,我会;目前,我只是好奇是否有一种受支持的方法可以通过syscall读取未签名的int。我在回复中编辑了一个指向MARS syscall完整列表的链接。不幸的是,我没有看到任何看起来适用的东西。关于异常的来源,这是一个很好的观点。至于建议要么读入字符串并解析值,要么使用不同的数字格式——我已经考虑过这一点,如果这是作业的核心,我会;目前,我只是好奇是否有一种受支持的方法可以通过syscall读取未签名的int。我在回复中编辑了一个指向MARS syscall完整列表的链接。不幸的是,我没有看到任何适用的东西。