-1

我只想使用 Syscall 运行任何类型的 Spim 程序来打开、读取和/或写入文件,但这不起作用。我知道我的程序和文件可能不在 QtSpim 的工作目录中,但我不知道如何找到它或设置一个新目录。所以在第一个 Syscall 之后 $v0 是 -1,这表明一个错误。我尝试使用要读取文件的整个路径名(下面的示例)并尝试编写/创建一个文件以查看 QtSpim 将保存文件的位置。如果我有一个根本性的缺陷,请随时告诉我。我在 Windows 下使用 QtSpim

    .data
filename: .asciiz "C:\Users\...\test.txt"      #einzulesender Dateiname
buffer: .space 1024
    .text
main:
#open the file (to get the file descriptor)
li   $v0, 13       # system call for open file
la   $a0, filename # board file name
li   $a1, 0        # Open for reading
li   $a2,          # Mode 
syscall            # open a file (file descriptor returned in $v0)
move $s1, $v0      # save the file descriptor 

#read from file
li   $v0, 14       # system call for read from file
move $a0, $s1      # file descriptor 
la   $a1, buffer   # address of buffer to which to read
li   $a2, 1024     # hardcoded buffer length
syscall            # read from file

# Close the file 
li   $v0, 16       # system call for close file
move $a0, $s1      # file descriptor to close
4

1 回答 1

0

我遇到了完全相同的问题,我的代码看起来几乎相同。大多数关于 qtspim 的系统调用函数的纪录片也告诉我,文件描述符在 $a0 中返回。甚至认为我们实际上在 $v0 中得到了描述符。

燃烧的答案:)

于 2015-12-26T19:51:49.383 回答