在MIPS中,如何使用syscall 14读取长文件?
我目前正在进行一个项目(使用在MIPS中,如何使用syscall 14读取长文件?,mips,Mips,我目前正在进行一个项目(使用MARS),需要使用syscall 14读取多行文件。我为系统调用使用了一个80字节长的设置缓冲区长度。我在一个_readLine函数中设置了我的循环,以便在每次迭代时将缓冲区的内容打印到控制台。这就是我如何认识到我的循环只读取文件的第一个80-字节,而不读取更多 我一直在搜索互联网,试图找到一个提示,说明为什么我无法读取文件的下一个80-字节。我认为它可能与文件描述符有关,但当我尝试递增它时,没有任何变化,它仍然只输出文件的第一个80-字节,使用syscall 14
MARS
),需要使用syscall 14
读取多行文件。我为系统调用使用了一个80字节长的设置缓冲区长度。我在一个_readLine函数中设置了我的循环,以便在每次迭代时将缓冲区的内容打印到控制台。这就是我如何认识到我的循环只读取文件的第一个80
-字节,而不读取更多
我一直在搜索互联网,试图找到一个提示,说明为什么我无法读取文件的下一个80
-字节。我认为它可能与文件描述符有关,但当我尝试递增它时,没有任何变化,它仍然只输出文件的第一个80
-字节,使用syscall 14
有人能帮我找出哪里出了问题,或者告诉我如何指向我文件的下一个80
字节吗?下面是我的代码(fileBuff
保存用户输入文件名的地址,\u printBuffer
是我稍后在程序中使用的函数,但您可以忽略)
Syscall 14读取连续字符串 当您告诉它读取80字节时,它将读取80字节。 当您再次调用它时(不关闭它),它将读取接下来的80个字节,依此类推 因此,我建议您移动这段代码:
addi $v0, $zero, 16 # syscall to close the file
add $a0, $zero, $s6 # file descriptor to close
syscall # close the file
在系统退出调用之前进入主块
addi $v0, $zero, 16 # syscall to close the file
add $a0, $zero, $s6 # file descriptor to close
syscall # close the file