next up previous
: 浮動小数点表現 : 乗算と除算 : 符号付き数の除算

[SPIM] MIPS における乗算と除算

上でみたように乗算および除算には対象となる数の倍の長さを持つ レジスタが必要となる (MIPS なら、64 ビットレジスタが必要)。

この 64 ビットレジスタは、(工夫された) アルゴリズムでは 以下のように使われる。

これらのレジスタは具体的には図 13 のように使用される。
図 13: MIPS における乗算と除算。実際にはもちろん、「4ビットレジスタ」→「32ビットレジスタ」、「8ビットレジスタ」→「64ビットレジスタ」である。
\begin{figure}\begin{center}\epsfxsize =7cm \epsfbox{mips_muldiv.eps}\end{center}\end{figure}

さて、上記の 64 ビットレジスタであるが、MIPS では 特別な 32 ビットレジスタ Hi と Lo が用意されていて、 それぞれ 64 ビットの上位 32 ビット、 下位 32 ビットを表している。

これらを用いる MIPS 命令には、例えば以下のものがある。

[問題]

  1. data08.zip をダウンロードしよう。配布ファイルは MulDiv.asm である。
  2. MulDiv.asm の中身の指示に従い、以下の計算を実行させてみよ。
    $7\times2$」、「$7\times (-2)$」、「$7\div2$」、「$7\div(-2)$」等など。 なお、結果は Windows 版 PCspim の上部のウィンドウで Hi レジスタと Lo レジスタを参照することで確認せよ。


平成16年12月13日