2016-11-16 65 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 = A * X + Y向量X和Y包含96個雙浮點數並分別存儲在地址Rx和Ry中。雙浮點數佔用8個字節(64位)。假設寄存器可以包含64個比特,並且CPU可以加載/通過產生只有一個地址(參考)存儲一個雙浮動

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

關於1)

的代碼有一個「循環」。當R20不等於零時,BNEZ R20, Loop指令會將執行流程更改爲Loop:標籤後的指令。

所以你應該首先弄清楚R20的值是如何計算的以及循環執行的次數。

給你一些提示:這是一個接近你想要的96值的兩個值的很好的力量,計算出它需要你瞭解指針(地址)算法是如何工作的以及爲什麼元素大小爲8字節的信息是重要。

然後,您可以調整源中的一個常量,使其循環96次。