在MIPS中将二进制文件读入数组

时间:2015-05-02 09:42:28

标签: assembly mips file-read

我有一个名为trace.dat的文件包含4个字节的整数。任何人都可以告诉我如何打开和读取文件,并将每个整数存储在一个名为arr的数组中(在MIPS中)?谢谢!

到目前为止,我有这个:

li $v0, 13
la $a0, file    #file contains the file name
li $a1, 0
li $a2, 0
syscall
add $s0, $v0, $0

1 个答案:

答案 0 :(得分:2)

您所拥有的代码只是打开文件,而不是读取它。为了实际读取你打开到缓冲区中的文件的内容,你需要使用系统调用号14,如下所示:

li $v0, 14
move $a0, $s0
la $a1, arr
li $a2, 32
syscall
bltz $v0, error

此代码假定$s0包含已打开文件的文件描述符,由于add $s0, $v0, $0,该文件描述符已存在。它还假设arr的大小为32个字节。

如果您的文件大于32个字节,您可以编写一个循环,该循环一直运行,直到系统调用14返回0或小于缓冲区大小的值。然后,您可以处理从循环内的文件读取的数据。