以 mips 格式打开和读取文件

Open and read file in mips

我正在尝试以 mips 格式打开和读取文件,但没有显示任何内容。我的文件与 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:抱歉我的英语不好

您的代码是正确的。但是,根据 MARS syscall specifications,在发出打开文件的系统调用时,如果 $v0 得到负值,则表示打开文件时出现问题。

您可以通过在 MARS 中组装代码来验证,在

上放置一个断点

move $s0, $v0

并在此行执行后检查 $s0 的内容(或者使用 $v0 中的系统调用 1 将 $s0 作为整数打印)。

如果这是否定的,(最有可能是你的情况?) - 这意味着文件无法被 MARS 的 JAVA 进程打开。

上面link还说"The underlying file I/O implementation uses java.io.FileInputStream.read() to read and java.io.FileOutputStream.write() to write."

请注意,您正在尝试打开 相对 路径 "hundredints.bin"(相对于 MARS Java 进程的主目录)。因此,JAVA 进程 MARS 应该 运行 来自与您尝试打开的代码和文件相同的目录。

您可以通过在 您的代码和文件目录 中发出以下命令来执行此操作(MAC 或 Linux,假设 java已安装!)-

java -jar Mars.jar

(或 Windows 中的等效排列)。

验证 MARS JAVA 进程的主页是否确实是您的代码的主页-

只是 'open' MARS 中的一个文件。它应该直接显示目录的内容。 :)

我已经在 Ubuntu 中对此进行了测试。希望这对您有所帮助!