Я реализую процедуру сборки, которая получает абсолютный путь (/ home / user / file) из пользовательского ввода и использует этот путь для открытия файла и чтения его содержимого.
Я пробовал следующие 3 процедуры:
.data
buffer: .space 128
openfileErrorWarning: .asciiz "Error"
.text
read_filepath:
li $v0, 8 # Syscall for input string
la $a0, buffer # Buffer size 128 bytes
li $a1, 600 # Max character 600
syscall
move $v0, $a0 # Moves the string in $a0 to the result register $v0
openfile:
move $a0,$v0 # Moves the string in $v0 to the argument register $a0
li $v0,13 # Syscall code for openfile
li $a1,0 # Syscall options
li $a2,0 # Syscall options
syscall
beq $v0,-1,openfileError # If $v0 is -1 the open file process failed
move $s0,$v0 # Moves the syscall output to $s0
j readfile # Not yet ...
openfileError:
li $v0,4 # Syscall for print
la $a0,openfileErrorWarning # printing the error declared in .data
syscall
Я могу точно получить пользовательский путь к файлу, но когда я пытаюсь открыть его в $ v0, появляется -1, процесс открытия не удался (даже когда абсолютный путь передается в качестве аргумента).
Есть ли какой-либо формат строки, о котором я не знаю? Нужно ли иметь \ n или что-то в конце строки, чтобы открыть его в виде файла? Как это сделать, добавить в строку пользователя?