查找二进制代码的类型和汇编语言
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 型指令进行编码,因此还必须评估字段 funct
和 shamt
。
在这种情况下,opcode=000000
以及 funct=100000
和 shamt=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
为以下二进制值提供类型和汇编语言:
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 型指令进行编码,因此还必须评估字段 funct
和 shamt
。
在这种情况下,opcode=000000
以及 funct=100000
和 shamt=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