【问题标题】:Why bgez and bltz have the same function code in MIPS为什么bgez和bltz在MIPS中有相同的功能代码
【发布时间】:2017-03-26 22:51:50
【问题描述】:

bgez 和 bltz 在 MIPS:000001 中的功能码相同,都是从 rt 字段分类的。但是,bgtz 和 blez 有不同的功能码。为什么设计者要这样做?

【问题讨论】:

  • 这个问题是什么意思?
  • BLTZ:INSTR31..26/INSTR20..16=01/00H BGEZ:INSTR31..26/INSTR20..16=01/01H 为什么 bltz 和 bgez 指令使用特殊编码?

标签: assembly mips cpu-architecture machine-code


【解决方案1】:

只有这么多的操作码可以用 6 位进行编码。所以在某些情况下,不止一条指令使用相同的操作码,并且指令字中的附加位用于确定指令。或作为MIPS32™ 程序员架构 第 I 卷:MIPS32™ 简介 建筑说:

不指定指令的操作码值而是指定指令类。类中的指令是 由其他字段中的值进一步指定。

然后他们在A.2 指令位编码表部分列出这些指令类和其他相关字段。
所以你会看到例如该操作码000001 是指令类REGIMM,并且该类中的指令由根据此表的位20..16 确定(左侧的位20..19,顶部的位18..16) :

       000      001     010      011    100   101  110  111
0  00  BLTZ    BGEZ    BLTZL    BGEZL    *     *    *    *
1  01  TGEI    TGEIU   TLTI     TLTIU   TEQI   *   TNEI  *
2  10  BLTZAL  BGEZAL  BLTZALL  BGEZALL  *     *    *    *
3  11    *      *        *        *      *     *    *    *

BLTZREGIMM 组的一部分,而BGTZ 不是,这似乎是任意的。我真的不能说为什么。最后,这并不重要。重要的是对于指令的编码方式有明确的规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多