レジスタ値を右にシフトする方法はありますが、(srl のように) 0 を追加する代わりに、1 を追加します。それが不可能な場合は、同じ目標を達成するための他の提案をいただければ幸いです。
1 に答える
2
シフトするレジスタの最上位ビットが 1 であることを最初に確認してから、右シフト演算 (結果を拡張する符号) を実行することで、これを行うことができます。
たとえば、レジスタ $t0 を 4 ビット右にシフトしたい場合は、次のようにします。
lui $at, 0x8000 # Set leftmost bit of $at to 1 and the others to 0
or $t0, $t0, $at # OR into register to be shifter
sra $t0, $t0, 4 # do an arithmetic shift right
于 2012-02-20T16:00:15.170 に答える