Java 将机器代码解码为装配说明的步骤
我在作业中给出了机器代码如下:Java 将机器代码解码为装配说明的步骤,java,assembly,decode,machine-code,Java,Assembly,Decode,Machine Code,我在作业中给出了机器代码如下: 3c011001 34300000 8e080000 20090003 11200004 01094020 2129ffff ae080000 08100004 2002000a 0000000c 我需要对这些进行解码以获得装配说明,如下所示: lui $at, 0x1001 ori $s0, $at, 0x0000 lw $t0, 0($s0) addi $t1, $zero, 3 beq $t1, $zero, 0x0004 add $t0, $
3c011001
34300000
8e080000
20090003
11200004
01094020
2129ffff
ae080000
08100004
2002000a
0000000c
我需要对这些进行解码以获得装配说明,如下所示:
lui $at, 0x1001
ori $s0, $at, 0x0000
lw $t0, 0($s0)
addi $t1, $zero, 3
beq $t1, $zero, 0x0004
add $t0, $t0, $t1
addi $t1, $t1, -1
sw $t0, 0($s0)
j 0x00400010
addi $v0, $zero, 10
syscall
解码的过程是什么
我尝试用java程序将hexa值转换为二进制,基于MIPS编码,我在二进制值上使用了switch case,输出结果如下:
0011 1100 0000 0001 0001 0000 0000 0001 lui $at, 0x1001
0011 0100 0011 0000 0000 0000 0000 0000 ori $s0, $at, 0x0000
1000 1110 0000 1000 0000 0000 0000 0000 lw $t0, 0($s0)
0010 0000 0000 1001 0000 0000 0000 0011 addi $t1, $zero, 3
0001 0001 0010 0000 0000 0000 0000 0100 beq $zero, $t1
0000 0001 0000 1001 0100 0000 0010 0000 add $t1, $t0, 0x4020
0010 0001 0010 1001 1111 1111 1111 1111 addi $t1, $t1, 0x15151515
1010 1110 0000 1000 0000 0000 0000 0000 sw $t0, 0($s0)
0000 1000 0001 0000 0000 0000 0000 0100 j 0x0004
0010 0000 0000 0010 0000 0000 0000 1010 addi $v0, $zero, 0x00010
0000 0000 0000 0000 0000 0000 0000 1100 syscall
这看起来像MIPS组件;我用Python编写了一个类似的程序,基本上将操作码/函数码映射到一个特定的指令名。您可以在Java中使用
映射
@JacobG执行同样的操作。我几乎已经完成了java may这可能是代码中的整个变化,您的开关对于操作码来说似乎工作得很好,所以在这个后期阶段没有迫切的理由放弃它,所以您真正的问题是解码操作数,那么?1111是十进制的15,F是十六进制的,不到15英寸hexadecimal@harold那我怎么做呢