Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将机器代码解码为装配说明的步骤_Java_Assembly_Decode_Machine Code - Fatal编程技术网

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那我怎么做呢