装配/机器代码中的分支

时间:2012-08-19 05:57:36

标签: assembly branch mips machine-code

使用之间有什么区别:

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

使用:

beq $1, $2, L2

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

谢谢

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

1 个答案:

答案 0 :(得分:4)

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

使用MIPS浮点协处理器时,$f1/$f2指令中的寄存器应为c.eq.s,因此两条指令不相同。除了那些在常规寄存器和协处理寄存器之间移动数据的情况之外,我从未看到在浮点指令中使用$1/$2

我认为只有方式以两步方式浮点条件分支。 IDT MIPS Microprocessor Family Software Reference Manual州:

  

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