Открыть и прочитать файл в мипс - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь открыть и прочитать файл в мипс, но ничего не показывает. У меня есть файл в том же каталоге, что и mars.jar, и я думаю, что код правильный. Я попробовал все и искал, и все еще это не работает. Пожалуйста, помогите мне, мне действительно нужно доставить эту программу, и я не знаю, что делать. Это мой код:

.data
bin: .asciiz "hundredints.bin"
size: .space 4096
.text
li $v0, 13
la $a0, bin
li $a1, 0
li $a2, 0
syscall
move $s0, $v0

li $v0, 14
move $a0, $s0
la $a1, size
li $a2, 4096
syscall

li $v0, 4
la $a0, size
syscall

li $v0, 16
move $a0, $s0
syscall

PS: простите за мой английский sh

1 Ответ

1 голос
/ 17 марта 2020

Ваш код правильный. Однако, согласно спецификациям системного вызова MARS , при выдаче системного вызова для открытия файла, если $ v0 получает отрицательное значение, это означает, что при открытии файла возникла проблема.

Вы можете проверьте это, собрав код в MARS, установив точку останова на

move $ s0, $ v0

и проверив содержимое $ s0 после эта строка выполняется (или, в качестве альтернативы, выведите $ s0 как целое число, используя syscall 1 в $ v0).

Если это отрицательно, (скорее всего, в вашем случае?) - это означает, что файл не может быть открыт процесс JAVA, который является MARS.

Приведенная выше ссылка также говорит: «Базовая реализация файлового ввода-вывода использует java .io.FileInputStream.read () для чтения и java .io. FileOutputStream.write () для записи. "

Обратите внимание, что вы пытаетесь открыть относительный путь "ndredints.bin" (относительно домашнего каталога процесса MARS Java). Следовательно, JAVA процесс MARS должен запускаться из того же каталога, что и ваш код и файл, который вы пытаетесь открыть.

Вы можете сделать это, введя в ваш следующий код каталог кодов и файлов (MA C или Linux, при условии, что java установлено!) -

java -jar Mars.jar

(или эквивалентное расположение в Windows).

Проверка, является ли дом процесса MARS JAVA действительно домом вашего кода -

Просто «откройте» файл в MARS. Он должен прямо показывать содержимое вашего каталога. :)

Я проверял это в Ubuntu. Надеюсь, это поможет!

...