mips转换为装配

时间:2015-05-31 09:23:25

标签: architecture mips

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

nil

使用以下寄存器

f = a - 20 + b + c - d

我的回答是:

 $1  a
 $2  b
 $3  c
 $4  d
 $5  f
 $6  g
 $7  i
 $8  j
 $9  A
 10$ D

现在常数-20让我失望了,我不确定我是否正确处理了它。

或者我能做到:

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

1 个答案:

答案 0 :(得分:1)

不要使用$1,它通常为汇编程序保留为$at用于伪指令。

您的代码可能如下所示

addui $5, $1, 0xFFEC # or a-20 in twos complement, but it should be the same
addu $5, $5, $2      # 
addu $5, $5, $3      #
subu $5, $5, $4      #

这一行

sw $5,o($5) // stores the answer

没有多大意义,因为您将$5保存到$5 + o,这看起来像是依赖于结果的位置。

然而,你的第二个代码是不正确的,因为它意味着

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