首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QtSpim中,打开文件总是返回"-1“。

在QtSpim中,打开文件总是返回"-1“。
EN

Stack Overflow用户
提问于 2016-12-18 13:54:11
回答 2查看 1K关注 0票数 0

我正在做一个大学项目,我们必须通过MIPS将数据写入文件。我可以在MARS上运行所有东西,但是在QtSpim上,只要打开一个文件总是会返回一个错误:

代码语言:javascript
复制
.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上工作的东西。

更新

当我使用绝对路径时,它似乎可以工作,但是文件必须存在才能在写模式下打开它。如果文件不存在,是否有创建该文件的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-19 15:31:20

嗯,经过大量的尝试和错误,当我打开带有标志0x41和模式0x1FF的文件时,它似乎是有效的。

如果我正确理解它,0x41是用create写的,0x1FF是正确的权限。

代码语言:javascript
复制
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在启动管理时甚至不能写入它自己的目录中,所以实际上只有绝对路径才能工作。

票数 0
EN

Stack Overflow用户

发布于 2017-01-04 16:19:35

QtSpim中的相对路径是基于它从哪个目录执行的,该目录可能与代码或图像的位置不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41209001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档