Architecture mips转换为汇编

Architecture mips转换为汇编,architecture,mips,Architecture,Mips,我正在为以下语句编写MIPS汇编: 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 我的答案是: 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) /

我正在为以下语句编写MIPS汇编:

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
我的答案是:

 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
现在常数-20让我有点不舒服,我不确定我是否处理得对

或者我可以:

 add  $5,$2,$3
 addi $5,$5,20
 sub  $5,$1,$5
 sub  $5,$5, $4
 sw   $5,0($5)

不要使用
$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