在 MIPS 中尝试用字符串和整数填充数组时出错?
Getting an error when trying to fill an array with Strings and ints in MIPS?
所以我需要用10"records"填充MIPS中的数组,其中包括员工的姓名、年龄和薪水。员工姓名最多 40 个字符,年龄和薪水都应该是整数。但是,在测试我写的这个循环时,我总是在第 18 行得到一个 "invalid integer input (syscall 5)" 在我通过前 5 名员工并输入 "Emp6" 并按回车键之后,我似乎无法弄清楚为什么.任何帮助将不胜感激!
测试输入:
Emp1
1
1
Emp2
2
2
Emp3
3
3
Emp4
4
4
Emp5
5
5
Emp6
错误代码:
Error in line 18: Runtime exception at 0x00400020: invalid integer input (syscall 5)
Go: execution terminated with errors.
您的主要问题似乎是 read_string
系统调用需要 $a1
中的缓冲区大小,但您将其用于循环计数器。因此,您最终从 space 中 运行 并且输入缓冲区中将留下未处理的文本,然后将由后续的 read_int
读取并爆炸。
进一步的问题是您不断递增 $a0
但没有在您的寻址中考虑到这一点。另外 sw $v0, 0($a0)
没有多大意义,字符串已经被读入内存, $v0
里面没有什么有趣的东西。
所以我需要用10"records"填充MIPS中的数组,其中包括员工的姓名、年龄和薪水。员工姓名最多 40 个字符,年龄和薪水都应该是整数。但是,在测试我写的这个循环时,我总是在第 18 行得到一个 "invalid integer input (syscall 5)" 在我通过前 5 名员工并输入 "Emp6" 并按回车键之后,我似乎无法弄清楚为什么.任何帮助将不胜感激!
测试输入:
Emp1
1
1
Emp2
2
2
Emp3
3
3
Emp4
4
4
Emp5
5
5
Emp6
错误代码:
Error in line 18: Runtime exception at 0x00400020: invalid integer input (syscall 5)
Go: execution terminated with errors.
您的主要问题似乎是 read_string
系统调用需要 $a1
中的缓冲区大小,但您将其用于循环计数器。因此,您最终从 space 中 运行 并且输入缓冲区中将留下未处理的文本,然后将由后续的 read_int
读取并爆炸。
进一步的问题是您不断递增 $a0
但没有在您的寻址中考虑到这一点。另外 sw $v0, 0($a0)
没有多大意义,字符串已经被读入内存, $v0
里面没有什么有趣的东西。