在 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 有了结果
好的,所以我正在尝试在 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 有了结果