执行1 - X的替代方式?

时间:2016-09-23 16:13:45

标签: assembly mips mars-simulator

我想把C表达式y = 1 - X并使其成为MIPS编译语言。 假设x = $ s0且y = $ s1

addi $s1, 1, -$s0

还有另一种方法吗?

2 个答案:

答案 0 :(得分:4)

也许这个:

li $s1, 1
subu $s1, $s1, $s0

答案 1 :(得分:2)

是。首先否定$s0作为二进制补码:

nor  $t0, $s0, $zero # flip bits of X, store in $t0
addi $t0, $t0, 1     # add one to $t0

addi $s1, $t0, 1     # now, add 1 to -X, store result in $s1

您还可以将两个步骤合并为一个,并使用少一个寄存器。但这有点不太清楚:

nor  $s1, $s0, $zero
addi $s1, $s1, 2