2017-05-29 12 views
0

私はMIPSのやり方を学んでいます。私は乗算を混乱させています。私は次のCコードをMIPSに変換していたとしましょう。レジスタ値にMIPSの定数を乗算するか?

c = b + a*3 

とa、b、cはそれぞれレジスタ$ s1、$ s2、$ s3に格納されています。 MIPSで* 3を書くにはどうすればいいですか?乗算のためのaddi型命令がありますか?または一時レジスタに3を格納し、このようなマルチ演算子を使用しますか?

addi $t0, $zero, 3 
mult $s1,$t0 

もしそうなら、私のCコードを完成させるためにこの操作の最終的な価値や製品を得るにはどうすればよいですか?

+0

64ビット製品は 'lo'と' hi'レジスタにあります。それらの値を得るには 'mflo'と' mfhi'命令を使います(最下位32ビットのみに興味があるなら 'mflo'のみ)。これらの命令の詳細については、MIPS命令セットリファレンスを参照してください。 – Michael

答えて

1

MIPS命令セットは、即値のマルチ命令を提供しません。したがって、一時レジスタに値を格納してから、マルチ命令を使用する必要があります。マルチ命令の結果は、結果の下位32ビットと結果の上位32ビットをそれぞれloとhiレジスタに格納されます。

+0

この場合、もしaがa = 3のような小さいものなら、私は "mflo"にのみ興味がありますか? – maxbr7t

+1

はい、それは正しいでしょう。 –