【问题标题】:MIPS32 assembly beq instruction explanationMIPS32汇编beq指令解释
【发布时间】:2016-07-20 05:50:34
【问题描述】:

有人可以解释为什么下面的装配线有意义吗?

beq $0, $0, 1

请注意,$0 是指始终具有值 0 的寄存器。 所以我们说如果 $0 = $0 然后转到 PC + 4 + 1 否则转到下一条指令。

我的困惑来自 beq 指令的直接字段,即 1。 这是否意味着我们要解决 PC + 5 ??? MIPS 在访问内存时不需要对齐并且所有内存位置都必须能被 4 整除吗?

请注意,书上说这条指令只是跳过了下一条指令。

【问题讨论】:

    标签: assembly mips mips32


    【解决方案1】:

    beq $t, $s, offset的语义是

    if ($t == $s) 
        PC = PC + 4 + 4 * offset;
    else 
        PC = PC + 4
    

    简单地说,在执行指令时,PC 总是提前 4 位,并且假定立即数缺少低两位,因为它们始终为零并且可以通过移位重新引入 (offset * 4 = offset << 2) .


    beq $0, $0, 1 只是跳过下一条指令,因为它重复设置了PC = PC + 8

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-04
      • 2021-04-13
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      相关资源
      最近更新 更多