查找二进制代码的类型和汇编语言

Finding the type and assembly language for binary code

为以下二进制值提供类型和汇编语言:

0000 00 10 000 1 0001 0100 0 000 00 10 0000two (8 points)

R型指令

Binary Value 000000 10000 10001 01000 00000 100000

Assembly Code   Op = 0 (Add)    Rs = 16 ($s0)   
Rt = 17 ($s1)   Rd = 8($t0) Shamt = 0   Funct =  (add)

Add $t0, $s0, $s1

这是我得到的,但我不确定它是否正确。我不确定如何将二进制代码转换为 r 型指令。

你的理解看起来是正确的

要分析二进制指令,请在 CPU 尝试执行它时查看它。

先看看指令集https://en.wikipedia.org/wiki/MIPS_architecture#Instruction_formats

前 6 位始终是操作码。操作码 0 对 R 型指令进行编码,因此还必须评估字段 functshamt。 在这种情况下,opcode=000000 以及 funct=100000shamt=00000 的值。

例如在这个https://opencores.org/projects/plasma/opcodes列表中,这样的组合可以被识别为顶行的ADD指令。

您已正确识别寄存器

rs=10000 16
rt=10001 17
rd=01000 8

所以把它们放在一起

// R8=R16+R17

ADD R8,R16,R17

由于寄存器名称约定,这也称为

ADD $t0,$s0,$s1