【问题标题】:What does func means in R-Format instruction set?func 在 R-Format 指令集中是什么意思?
【发布时间】:2011-08-03 15:56:35
【问题描述】:

我对汇编语言非常陌生。我正在阅读有关 MIPS 架构的信息,但我被 Register Format (R-Format) 的最后一个字段困住了。这是它的视觉表现, 谁能帮我解答一下第六个字段是什么意思以及我们如何计算它? 提前致谢。

【问题讨论】:

    标签: assembly mips cpu-architecture machine-code


    【解决方案1】:

    正如描述中提到的所有 R 类型指令(例如 ADDANDSLL 和其他)将 6 个最高有效位(= op)设置为 0,这意味着区分它们是查看 6 个最低有效位(= 函数)。换句话说,它们决定了指令类型。也许一个例子会有所帮助:

    ADD $1, $2, $3 
    

    有:

    op = 0 (as all R-type instructions)
    rs = 2
    rt = 3
    rd = 1
    shamt = 0
    funct = 0x20 = 0b00000100000 = 32
    

    因此编码将是:

    0000 0000 0100 0011 0000 1000 0010 0000
    

    例如XOR(另一种 R 类型)指令函数是 0b100110 = 0x26 = 38。因此,您通过查找要编码的指令来“计算”它。

    (取自MIPS Instruction Reference)。

    【讨论】:

    • 你能解释一下你是怎么得到 func = 0x20 的吗?
    • @JustAnotherProgrammer:我在一张表中查到了它(比如 linked 的那个)。 add 的函数是 0x20
    • 这是否与 ALUop 控制信号有关?
    • @KennethWorden:您应该开始一个新问题并记住包含有关您所指的特定“ALUop”控制信号的信息(如果您引用例如 Patterson 等人的 COD,请包括版本和页面)
    • @KennyWorden:在一个简单的 MIPS 实现中,是的。 MIPS 机器代码是有意设计的,因此指令字的字段可以直接用作内部控制信号,而“解码”最少。如果您查看一个简单 MIPS 的框图,它可能会将指令字的那部分直接路由到 ALU 的控制输入。
    【解决方案2】:

    来自下表:

    http://en.wikibooks.org/wiki/MIPS_Assembly/Instruction_Formats#Opcodes

    几乎所有R-Type指令的操作码都是00,所以函数选择ALU函数。

    功能 对于共享操作码的指令,函数参数 包含必要的控制代码来区分不同的 指示。 6 位长(0 到 5)。示例:操作码 0x00 访问 ALU,函数选择使用哪个 ALU 函数。

    【讨论】:

      猜你喜欢
      • 2014-12-10
      • 2011-08-27
      • 1970-01-01
      • 2013-12-17
      • 2022-06-10
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 2016-04-21
      相关资源
      最近更新 更多