2017-05-29 39 views
0

我正在學習如何做MIPS,我對乘法感到困惑。假設我將以下C代碼轉換爲MIPS。在MIPS中將寄存器值乘以常數?

c = b + a*3 

將a,b,c分別存儲在寄存器$ s1,$ s2,$ s3中。我該如何在MIPS中寫入* 3?是否有一個addi類型的乘法指令,或者我將3存儲在一個臨時寄存器中並使用像這樣的mult操作符?

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

如果是這樣,我該如何獲得該操作的最終價值或產品來完成我的C代碼?

+0

64位產品位於'lo'和'hi'寄存器中。使用'mflo'和'mfhi'指令來獲取它們的值(或者,如果你只對32個最低有效位感興趣,那麼就是'mflo')。有關這些說明的更多信息,請參閱MIPS指令集參考。 – Michael

回答

1

MIPS指令集不提供具有立即值的多指令。因此,您必須將該值存儲到臨時寄存器中,然後使用mult指令。 mult指令的結果將存儲在lo和hi寄存器中,分別給出結果的低32位和高32位的結果。

+0

所以在這種情況下,如果a是小的像a = 3那麼我只會對「mflo」感興趣是否正確? – maxbr7t

+1

是的,那是對的。 –

相關問題