2

使用有什么区别:

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

并使用:

beq $1, $2, L2

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

谢谢

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

4

1 回答 1

4

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

使用 MIPS 浮点协处理器,寄存器应该$f1/$f2c.eq.s指令中,这样两条指令就不会等价。除了在常规寄存器和协处理器之间移动数据的指令外,我从未见过$1/$2浮点指令中的使用。

我认为以两步方式进行浮点条件分支的唯一方法。国家IDT MIPS Microprocessor Family Software Reference Manual

FP 测试和分支指令是分开的。一条测试指令比较两个 FP 值并相应地设置 FPA 条件位(FP 状态寄存器中的 C);分支指令根据该位是否设置进行分支。

于 2012-08-19T06:08:35.607 回答