MARSを使用して浮動小数点加算を行っています。
SameExponent:
add $s6,$s4,$s5
指数を揃えた後、仮数を合計しましたが、仮数を左または右にシフトするために、合計がまだ正規化されているかどうかを検出するにはどうすればよいですか? ありがとうございました
MARSを使用して浮動小数点加算を行っています。
SameExponent:
add $s6,$s4,$s5
指数を揃えた後、仮数を合計しましたが、仮数を左または右にシフトするために、合計がまだ正規化されているかどうかを検出するにはどうすればよいですか? ありがとうございました
仮数が -A ... +A の範囲の整数である場合、それらを加算した結果は -2A ... +2A の範囲になります。結果を正規化するには、左または右にシフトして最上位の 1 ビットを正規化された位置に戻す必要があります。シフト量を追跡して、それに応じて指数を調整できるようにします。
必要な最大右シフトは 1 桁です。引数が正または負の場合、左シフトはさらに大きくなる可能性があります。これを行う簡単な方法はwhile
、MSB が目的の位置になるまで 1 つ左にシフトする、スタイルのループです。
与えられた値以上の最小の 2 の累乗を見つけるアルゴリズムには、より高速なものが必要な場合に別の可能性があります (ただし、MIPS には何もありません)。