关于装配/机器代码相等的分支



使用有什么区别

c.eq.s    $1, $2
bc1t      L2

使用:

beq $1, $2, L2

如果他们做同样的事情,为什么有两种分支方式?如果它们不同,每种都有什么好处?

感谢

编辑:我不知道"c.eq.s"是特定于协处理器的。为了与第二组代码保持一致,我只写了$1,$2,而不是$f1,$f2。

如果数学协处理器条件第1位为真,则bc1t指令简单分支。如果两个寄存器相等,则情况就是这样。如果beq的值相等,则相当于简单地分支,但如果两种情况下寄存器实际上是相同的寄存器,则

对于MIPS浮点协处理器,寄存器应为c.eq.s指令中的$f1/$f2,因此这两条指令将不等效。我从未见过在浮点指令中使用$1/$2,除了在常规寄存器和协处理器寄存器之间移动数据的指令。

我认为只有方法可以以两步方式进行浮点条件分支。IDT MIPS Microprocessor Family Software Reference Manual状态:

FP测试和分支指令是分开的。测试说明比较两个FP值并相应地设置FPA条件位(FP状态寄存器);分支指令根据位是否为设置或取消设置。

最新更新