使用の違いは何ですか:
c.eq.s $1, $2
bc1t L2
そして使用:
beq $1, $2, L2
同じことをするのに、分岐する方法が 2 つあるのはなぜですか? また、それらが異なる場合、それぞれの利点は何ですか?
ありがとう
編集:「c.eq.s」がコプロセッサ固有であることを知りませんでした。2 番目のコード セットとの統一のために、$f1、$f2 の代わりに $1、$2 のみを記述しました。
使用の違いは何ですか:
c.eq.s $1, $2
bc1t L2
そして使用:
beq $1, $2, L2
同じことをするのに、分岐する方法が 2 つあるのはなぜですか? また、それらが異なる場合、それぞれの利点は何ですか?
ありがとう
編集:「c.eq.s」がコプロセッサ固有であることを知りませんでした。2 番目のコード セットとの統一のために、$f1、$f2 の代わりに $1、$2 のみを記述しました。
bc1t
演算コプロセッサ条件ビット 1 が真の場合、命令は単純に分岐します。これは、2 つのレジスタが等しい場合に当てはまります。値が等しい場合に単純に分岐することと同等ですが、両方のケースでレジスタが実際に同じレジスタであった場合にbeq
限ります。
MIPS 浮動小数点コプロセッサでは、レジスタは命令$f1/$f2
内にある必要があるc.eq.s
ため、2 つの命令は同等ではありません。通常のレジスタとコプロセッサのレジスタ間でデータを移動する命令以外では、浮動小数点命令での使用を見たことがありません。$1/$2
2 段階で条件分岐を浮動小数点にする唯一の方法だと思います。IDT MIPS Microprocessor Family Software Reference Manual
状態:
FP テストと分岐命令は別です。テスト命令は 2 つの FP 値を比較し、それに応じて FPA 条件ビットを設定します (FP ステータス レジスタの C)。分岐命令は、ビットが設定されているか設定解除されているかに基づいて分岐します。