2016-11-16 7 views
0

私はアセンブリの概念にはかなり新しいです、私はいくつかのことがアセンブリを変更して参照を増やすにはどうすればよいですか?

 1)modify the code above to handle vectors with 96 elements. 
    2)How can i know the data reference generated. 
    3)How can i know the instruction reference generated 

Yが+ Y.ベクトルXとYは*を=が含まれているX Aベクトルを成し遂げるために集中しなければならない方法や場所を知りたいと思いました96はそれぞれ二重に浮動し、アドレスRxおよびRyにそれぞれ格納される。 double floatは8バイト(64ビット)です。コードは

)レジスタは64ビットを含み、CPUがロードできる/約1つのみのアドレス(参照)

L.D F0, a 
    ADDI R4, Rx, #512 : last address to load 

Loop: L.D F2, 0(Rx)   : load X(i) 
     MUL.D F2, F2, F0   : a x X(i) 
     L.D F4, 0(Ry)   :load Y(i) 
     ADD.D F4, F4, F2   : a x X(i) + Y(i) 
     S.D F4, 0(Ry)   : store into Y(i) 
     ADDI Rx, Rx, #8  : increment index to X 
     ADDI Ry, Ry, #8   : increment index to Y 
     SUB R20, R4, Rx  : compute bound 
     BNEZ R20, Loop  : check if done 
+3

こんにちはSmple_V、私たちはお手伝いしたいと思いますが、私たちは同じ学校/大学に通っていないと思います。したがって、あなたの教師/教授が*指示参照生成*(および*データ参照*)によって何を意味するのかは、自己限定的な文脈の中で理解できるものに翻訳されなければならない。簡単に言えば:私はあなたが何を求めているのか分からない。 –

答えて

0

を生成することによって、二重フロートを格納することができると仮定すると、「ループ」を有します。 BNEZ R20, Loop命令は、R20がゼロに等しくない場合、実行フローをLoop:ラベルの後の命令に変更します。

まず、R20の値がどのように計算されるのか、ループが何回実行されるのかを理解する必要があります。

これは、あなたの望む96に近い2つの価値があり、ポインタ(アドレス)の算術がどのように働くのか、なぜ要素サイズが8バイトであるのかを理解する必要があるでしょう。重要。

ソースで1つの定数を調整して96回ループさせることができます。

関連する問題