0

これは単なる宿題なので詳細な回答は期待できません。私は皆の時間を無駄にしたくありません。コンピュータアーキテクチャ命令宿題

MIPSコードのようなものについて質問があります。

我々は、命令有するメモリのメモリアーキテクチャである'M'機械有する:

'mmul.d a,b,c' 

bcで64ビット浮動小数点値を取得し、メモリアドレスaに格納されています。今、私は'mmul.d a,b,c'

を実装J-マシンのプログラムを記述する必要が

lw  r1,a  // load 32 bits starting at 'a' 
sw  r1,a  // store 32 bits starting at 'a' 
pack f0,r1,r2 // pack two 'r' registers into one 'f' register 
unpack f0,r1,r2 // unpack one 'f' register into two 'r' registers 
mul.d f0,f2,f4 // perform floating-point multiply f2 * f4 

はその後、我々は、一つ以上の'J'マシン命令に'M'機械の取扱説明書を翻訳小さい組み込み'J'のマシンを持っています

しかし私は64ビットのマシンメモリアドレスが32ビットレジスタにどのようにロードできるのか分かりません。私たちは2でメモリアドレスをdevideことができれば、私は考えて何を:私たちは、ストアワードでレジスタに値を格納ジュストことができるので

lw r1, b 
sw r2, b[0] 
sw r3, b[1] 
lw r1, c 
sw r4, c[0] 
sw r5, c[1] 
pack f2, r2, r3 
pack f4, r4, r5 
mul.d f0, f2, f4 

まず私は、荷重のポイントだか知っていると言葉を格納しないでください。

これらの32ビットと64ビットが互いにどのように通信するのかについての説明や説明があれば参考になります。

答えて

1

Jはメモリから64ビット浮動小数点レジスタをロードできないようですので、中間32ビット整数レジスタでこの制限を回避する必要があります。おそらくこれに似ているはずです:

lw r1, b 
lw r2, b + 4 
pack f1, r1, r2 

lw r1, c 
lw r2, c + 4 
pack f2, r1, r2 

mul.d f0, f1, f2 

unpack f0, r1, r2 
sw r1, a 
sw r1, a + 4