我只想使用Syscall运行任何类型的Spim程序来打开,读取和/或写入文件,但这样做无效。我知道可能我的程序和文件不在QtSpim的工作目录中,但我不知道如何机会它或设置一个新目录。因此在第一个Syscall $ v0为-1后,表示错误。我尝试使用to-read-file的整个路径名(下面的示例),并尝试编写/创建一个文件来查看,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
答案 0 :(得分:0)
我遇到了完全相同的问题,我的代码看起来几乎一样。关于qtspim的syscall函数的大多数纪录片也告诉我,文件描述符以$ a0的形式返回。甚至认为我们在$ v0中实际获得了描述符。
燃烧答案:)