オンラインで MIPS ASM 演習を行っていますが、他の ASM 言語も同様です。
次の質問に問題があります。13xを実行する必要があります。かんたんだよ:
## Compute 13x
ori $8,$0,1 # $8 = x
sll $9,$8,2 # x*2^2 = 4x
sll $10,$8,3 # x*2^3 = 8x
addu $10,$9,$10 # 4x+8x = 12x
addu $10,$10,$8 # 12x+x = 13x
ただし、さらに1 つの命令を追加するだけで -13x を計算するように指示されています。
私の考えは、2 の補数を取ることでした。ただし、それは 2 つの命令です。
## Calculate -13x with one additional instruction
nor $11,$10,$0 #
addiu $11,$11,1 # flip bits and +1 to get two's comp?
1 つの追加命令で -13x を計算するにはどうすればよいですか?
これは、私の元の 13x コードが良くないことを意味していると思います。
これを行うための「汚いハック」を考えることができますが、それは教授が探しているものではないと思います.
注: 次の手順の使用のみが許可されています。
add
sll
addi
addiu
addu
and
andi
or
ori
nor
sub
subu
srl
xor
xori