执行 1 - X 的替代方法?

Alternate way to perform 1 - X?

我想把 C 表达式 y = 1 - X 变成 MIPS 编译语言。 假设 x = $s0 和 y = $s1

addi $s1, 1, -$s0

有其他方法吗?

是的。先取反$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 

也许是这样:

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