0

我正在做一些在线 MIPS ASM 练习,但其他 ASM 语言将是类似的。

我对以下问题有疑问。它需要我执行 13 倍。这很简单:

## 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
4

1 回答 1

2

没关系,我是笨蛋。

我刚刚解决了。只需 0 - 13 倍!?!?!?

subu $11,$0,$10 # 0 - 13x = -13x
于 2013-03-02T14:15:09.010 回答