使用 java 在 MIPS 程序中实现指令获取步骤的最佳方法是什么?

What is the best way to implement the instruction fetching step in a MIPS program using java?

我正在使用 java 实现一个简单的 MIPS 模拟器。我的问题是在获取指令步骤中,我应该采用一条指令并将其转换为 32 位二进制代码,以便能够确定前 6 位是操作码,接下来的 5 位是 rs(源寄存器)等等.

起初我以为我会制作一个数组列表并添加我的程序将支持的 15 条指令,然后制作另一个数组列表并添加 32 个可用寄存器然后当用户输入他的代码时我循环输入string 将它与我的指令进行比较并在数组中注册名称,但后来我意识到我不知道我要从用户代码中比较哪些字符我的意思是 (add $s1 $s4 $s5) 将不同于 ( addi $t8 $zero 1) 所以我不能每次都用指令数组检查前 3 个字符的子字符串,然后检查下 3 个字符,因为正如你所见,零寄存器可能占据更大的位置等等。

我的第二种方法是通过操作码定义指令,通过二进制值定义寄存器,然后将用户给定的指令转换为二进制并进行比较。是否有任何其他可能或可能更简单的方法来做到这一点?

如果我没理解错的话,你的问题是如何将用户的汇编代码转换为由你的 MIPS 解释的机器代码。这是分词器派上用场的地方。使用 StringTokenizer (http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html) 将用户输入转换为一串字节码,并将后者完全按照您在问题中提出的建议提供给您的 MIPS。