2017-05-29 129 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

是的,那是对的。 –

相关问题