我正在做一些在线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
然而,它然后通过仅添加一个更多指令来计算-13x。
我的想法是采取两个补充。但是,这是2条指令:
## Calculate -13x with one additional instruction
nor $11,$10,$0 #
addiu $11,$11,1 # flip bits and +1 to get two's comp?
如何在一条附加指令中计算-13x?
我想这意味着我原来的13x代码并不好,因为我似乎只用一条指令就可以做到这一点。
我可以想到“肮脏的黑客”这样做,但我认为这不是教授所期待的。
注意:我只能使用以下说明:
add
sll
addi
addiu
addu
and
andi
or
ori
nor
sub
subu
srl
xor
xori
答案 0 :(得分:1)
没关系,我很蠢。
我刚刚解决了。只需0 - 13x!?!?!?
subu $11,$0,$10 # 0 - 13x = -13x