我正在做一个大学项目,我们必须通过MIPS将数据写入文件。我可以在MARS上运行所有东西,但是在QtSpim上,只要打开一个文件总是会返回一个错误:
.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中一步一步地运行这个程序时,-1就会在syscall之后在$v0中得到。有什么想法吗,为什么QtSpim不能运行这个?我使用的是Windows 10,QtSpim版本9.1.17,尽管在LinuxMint 18上的相同版本也有相同的问题。任何帮助,感谢,现在我将运行火星上的一切,但我们必须提交一些在QtSpim上工作的东西。
更新
当我使用绝对路径时,它似乎可以工作,但是文件必须存在才能在写模式下打开它。如果文件不存在,是否有创建该文件的方法?
发布于 2017-01-19 15:31:20
嗯,经过大量的尝试和错误,当我打开带有标志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在启动管理时甚至不能写入它自己的目录中,所以实际上只有绝对路径才能工作。
发布于 2017-01-04 16:19:35
QtSpim中的相对路径是基于它从哪个目录执行的,该目录可能与代码或图像的位置不同。
https://stackoverflow.com/questions/41209001
复制相似问题