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
我正在为以下语句编写 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