【问题标题】:Finding the type and assembly language for binary code查找二进制代码的类型和汇编语言
【发布时间】:2020-01-16 20:54:11
【问题描述】:

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

0000 00 10 000 1 0001 0100 0 000 00 10 0000二(8分)

R型指令

二进制值 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 类型的指令。

【问题讨论】:

  • 这是作业吗,因为你没有提到你使用的是什么架构
  • 这是硬件问题,使用 MIPS 语言

标签: assembly mips computer-science


【解决方案1】:

您的理解似乎正确

要分析二进制指令,请查看它,因为您是尝试执行它的 CPU。

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

前 6 位始终是 OPcode。操作码 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-21
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    相关资源
    最近更新 更多