【问题标题】:Multiplying a register value by a constant in MIPS?将寄存器值乘以 MIPS 中的常数?
【发布时间】:2017-10-29 07:21:03
【问题描述】:

我正在学习如何做 MIPS,但我对乘法感到困惑。假设我正在将以下 C 代码转换为 MIPS。

c = b + a*3 

a,b,c 分别存储在寄存器 $s1,$s2,$s3 中。我应该如何在 MIPS 中写 a*3?是否有用于乘法的 addi 类型指令,或者我是否将 3 存储在临时寄存器中并像这样使用 mult 运算符?

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

如果是这样,我如何获得此操作的最终值或乘积来完成我的 C 代码?

【问题讨论】:

  • 64 位产品在lo 和hi 寄存器中。使用mflo 和mfhi 指令来获取它们的值(或者如果您只对32 个最低有效位感兴趣,则只需mflo)。有关这些指令的更多信息,请参阅 MIPS 指令集参考。

标签: mips multiplication


【解决方案1】:

MIPS 指令集不提供具有立即值的 mult 指令。因此,您必须将值存储到临时寄存器中,然后使用 mult 指令。 mult 指令的结果将存储在 lo 和 hi 寄存器中,分别给出结果的低 32 位和结果的高 32 位。

【讨论】:

  • 所以在这种情况下,如果 a 是像 a = 3 这样的小东西,那么我只会对“ mflo ”感兴趣,对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多