Проблема открытия файла из пользовательского ввода в сборке MIPS - PullRequest
0 голосов
/ 22 апреля 2019

Я реализую процедуру сборки, которая получает абсолютный путь (/ 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 или что-то в конце строки, чтобы открыть его в виде файла? Как это сделать, добавить в строку пользователя?

...