在 MIPS 中将数字乘以 12

multiplying a number by 12 in MIPS

好的,所以我正在尝试在 MIPS 中编写一个粗略的程序,将任何数字乘以 12。我决定为此使用移位。对 MIPS 很陌生,所以不确定如何执行此操作。我相信这里有人会非常好并向我展示。

addi $a0, 2

sll $t0,$a0,2

li $v0,2

move $a0,$t0

syscall

li $v0,5

syscall

如果您尝试使 12 成为两个乘法的幂(然后使用 shift 很容易做到):

12 = 4 * 3 =  4 * (2 + 1)

因此,假设 a0 具有原始值,您将在汇编中执行相当于:

t0 = a0<<1  # the 2 part
t0 = t0 + a0 # that's the 2+1 done
a0 = t0<<2  # that's the  4 * (2 + 1) put back to the original register

汇编程序也是如此,仍然假设 a0 中有数字(并按照与上面相同的顺序进行操作):

sll $t0, $a0, 1
add $t0, $t0, $a0
sll $a0, $t0, 2

现在 a0 有了结果