mips 转换为汇编

mips converting to assembly

我正在为以下语句编写 MIPS 程序集:

f = a - 20 + b + c - d

使用以下寄存器

   a
   b
   c
   d
   f
   g
   i
   j
   A
 10$ D

我的回答是这样的:

 add  ,,  // f=b+c
 addi 5$,5$,-20 // f=f+(-20)
 add  ,,5$  // f=a+f 
 sub  ,,  // f=f-d
 sw   ,o()  // stores the answer

现在常量 -20 让我有点不适应,我不确定我是否处理得当。

或者我可以这样做:

 add  ,,
 addi ,,20
 sub  ,,
 sub  ,, 
 sw   ,0()

不要使用</code>,它通常作为<code>$at用于伪指令而保留给汇编程序。

您的代码可能如下所示

addui , , 0xFFEC # or a-20 in twos complement, but it should be the same
addu , ,       # 
addu , ,       #
subu , ,       #

这一行

sw ,o() // stores the answer

没有多大意义,因为您正在将 </code> 保存到 <code> + o,这看起来像是一个取决于结果的位置。

但是,您的第二个代码是不正确的,因为它意味着

f = a - (b + c + 20) - d
f = a - b - c - 20 - d