在MIPS上创建和写入文件

时间:2014-09-20 21:54:08

标签: file mips

我正在尝试创建一个名为“exit.txt”的文件,并在其上写一些数据。我尝试过不同的标志和模式,但这似乎不起作用。这是我正在使用的代码:

str_exit: .asciiz "/home/LinuxPc/Desktop/exit.txt"

file_write:

li $v0, 13
la $a0, str_exit
li $a1, 1
la $a2, 0
syscall

有没有办法让它发挥作用? 谢谢!!

2 个答案:

答案 0 :(得分:4)

除了gusbro的答案(在写入之前打开文件流),可能有助于为打开文件调用设置标志和模式,如下所示:

li $a1, 0x41            
li $a2, 0x1FF           

这将标志设置为十六进制值0x41,告诉调用首先创建文件。模式设置为十六进制值0x1FF,转换为二进制值 0000 0000 0001 1111 1111设置文件权限: (...)0 111(n)111(g)111(其他)。

答案 1 :(得分:1)

您将代码设置为以写入模式打开文件,但您没有在文件中写入任何内容。 下面是一个如何打开/写入/关闭文件的示例:

.data
str_exit: .asciiz "test.txt"
str_data: .asciiz "This is a test!"
str_data_end:

.text

file_open:
    li $v0, 13
    la $a0, str_exit
    li $a1, 1
    li $a2, 0
    syscall  # File descriptor gets returned in $v0
file_write:
    move $a0, $v0  # Syscall 15 requieres file descriptor in $a0
    li $v0, 15
    la $a1, str_data
    la $a2, str_data_end
    la $a3, str_data
    subu $a2, $a2, $a3  # computes the length of the string, this is really a constant
    syscall
file_close:
    li $v0, 16  # $a0 already has the file descriptor
    syscall