0

レジスタ値を右にシフトする方法はありますが、(srl のように) 0 を追加する代わりに、1 を追加します。それが不可能な場合は、同じ目標を達成するための他の提案をいただければ幸いです。

4

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 に答える