: 浮動小数点表現
: 乗算と除算
: 符号付き数の除算
上でみたように乗算および除算には対象となる数の倍の長さを持つ
レジスタが必要となる (MIPS なら、64 ビットレジスタが必要)。
この 64 ビットレジスタは、(工夫された) アルゴリズムでは
以下のように使われる。
- 乗算
- 32 ビットレジスタ:被乗数
- 64 ビットレジスタ:乗数・積 共用
- 除算
- 32 ビットレジスタ:除数
- 64 ビットレジスタ:被除数・商・剰余 共通
これらのレジスタは具体的には図 13
のように使用される。
図 13:
MIPS における乗算と除算。実際にはもちろん、「4ビットレジスタ」→「32ビットレジスタ」、「8ビットレジスタ」→「64ビットレジスタ」である。
|
さて、上記の 64 ビットレジスタであるが、MIPS では
特別な 32 ビットレジスタ Hi と Lo が用意されていて、
それぞれ 64 ビットの上位 32 ビット、 下位 32 ビットを表している。
これらを用いる MIPS 命令には、例えば以下のものがある。
- mult $t0, $t1 : 符号付き数 $t0, $t1 の乗算を行ない結果を Hi、Lo に収める。
- multu $t0, $t1 : 符号なし数 $t0, $t1 の乗算を行ない結果を Hi、Lo に収める。
- div $t0, $t1 : 符号付き数 $t0, $t1 の除算を行ない結果を Hi、Lo に収める。
- divu $t0, $t1 : 符号なし数 $t0, $t1 の除算を行ない結果を Hi、Lo に収める。
[問題]
-
data08.zip をダウンロードしよう。配布ファイルは MulDiv.asm である。
- MulDiv.asm の中身の指示に従い、以下の計算を実行させてみよ。
「」、「」、「」、「」等など。
なお、結果は Windows 版 PCspim の上部のウィンドウで Hi レジスタと
Lo レジスタを参照することで確認せよ。
平成16年12月13日