在 QtSpim 中始终打开文件 returns“-1”
Opening file always returns "-1" in QtSpim
我正在做一个大学项目,我们必须通过 MIPS 将数据写入文件。我在 MARS 上将所有内容都发送到 运行,但在 QtSpim 上,打开文件总是 returns 错误:
.data
file_name: .asciiz "test.pgm"
#
# main
#
.text
.globl main
main:
# Open File in write mode
li $v0, 13 # $v0 = 13, option for opening file
la $a0, file_name # $a0 = &file_name
li $a1, 1 # $a1 = 1, write-flag
li $a2, 0 # $a2 = 0, mode is ignored
syscall # open File, save descriptor to $v0
jr $ra # return
当我在 QtSpim 中 运行 逐步执行此操作时,我在 syscall
之后的 $v0
中得到一个 -1
。
任何想法,为什么 QtSpim 不能 运行 这个?我在 Windows 10,QtSpim 版本 9.1.17,尽管 LinuxMint 18 上的相同版本也有同样的问题。感谢任何帮助,现在我将 运行 MARS 上的所有内容,但我们必须提交在 QtSpim 上工作的东西。
更新
当我使用绝对路径时它似乎工作,但文件必须存在才能以写入模式打开它。如果文件不存在,有没有办法创建文件?
QtSpim 中的相对路径基于执行它的目录,该目录可能与您的代码或图像的位置不同。
好吧,经过大量的反复试验,当我打开标志为 0x41 和模式为 0x1FF 的文件时,它似乎可以工作。
如果我没理解错的话,0x41 是用 create 写的,0x1FF 是正确的权限。
main:
# Open File in write mode
li $v0, 13 # $v0 = 13, option for opening file
la $a0, file_name # $a0 = &file_name
li $a1, 0x41 # $a1 = 0x41, write-flag with create
li $a2, 0x1FF # $a2 = 0, permissions
syscall # open File, save descriptor to $v0
jr $ra # return
还有绝对路径,显然 QtSpim 在以管理员身份启动时甚至不能写入它自己的目录,所以实际上只有绝对路径有效。
我正在做一个大学项目,我们必须通过 MIPS 将数据写入文件。我在 MARS 上将所有内容都发送到 运行,但在 QtSpim 上,打开文件总是 returns 错误:
.data
file_name: .asciiz "test.pgm"
#
# main
#
.text
.globl main
main:
# Open File in write mode
li $v0, 13 # $v0 = 13, option for opening file
la $a0, file_name # $a0 = &file_name
li $a1, 1 # $a1 = 1, write-flag
li $a2, 0 # $a2 = 0, mode is ignored
syscall # open File, save descriptor to $v0
jr $ra # return
当我在 QtSpim 中 运行 逐步执行此操作时,我在 syscall
之后的 $v0
中得到一个 -1
。
任何想法,为什么 QtSpim 不能 运行 这个?我在 Windows 10,QtSpim 版本 9.1.17,尽管 LinuxMint 18 上的相同版本也有同样的问题。感谢任何帮助,现在我将 运行 MARS 上的所有内容,但我们必须提交在 QtSpim 上工作的东西。
更新
当我使用绝对路径时它似乎工作,但文件必须存在才能以写入模式打开它。如果文件不存在,有没有办法创建文件?
QtSpim 中的相对路径基于执行它的目录,该目录可能与您的代码或图像的位置不同。
好吧,经过大量的反复试验,当我打开标志为 0x41 和模式为 0x1FF 的文件时,它似乎可以工作。
如果我没理解错的话,0x41 是用 create 写的,0x1FF 是正确的权限。
main:
# Open File in write mode
li $v0, 13 # $v0 = 13, option for opening file
la $a0, file_name # $a0 = &file_name
li $a1, 0x41 # $a1 = 0x41, write-flag with create
li $a2, 0x1FF # $a2 = 0, permissions
syscall # open File, save descriptor to $v0
jr $ra # return
还有绝对路径,显然 QtSpim 在以管理员身份启动时甚至不能写入它自己的目录,所以实际上只有绝对路径有效。