在 MIPS 程序集中使用逻辑移位的乘法

Ozw*_*rld 3 assembly mips bit-shift multiplication mips32

有人可以告诉我如何制作使用 MIPS 程序集中的移位进行乘法的代码吗?我不明白有一个数字 2^n 如何帮助我使用奇数被乘数进行乘法


我目前有这个代码,我正在尝试制作一个计算器

.text

li  $v0, 4 
la  $a0, ask_1
syscall

li  $v0,5
syscall
move    $s1, $v0


li  $v0, 4
la  $a0, ask_2
syscall

li  $v0,5
syscall
move    $s2, $v0

#sll    $s2, $s2, 3     #$s2 * $s2^3 = result
srl $s2, $s2, 1

li  $v0, 1
la  $a0, ($s2)
syscall


.data

ask_1:  .asciiz     "Enter Multiplier\n"
ask_2:  .asciiz     "Enter Multiplicand\n"
result: .asciiz         "The Answer is:\n"
Run Code Online (Sandbox Code Playgroud)

phu*_*clv 6

将数字左移 n 位将该数字乘以 2 n。例如n << 3 = n*2³ = n*8。对应的指令是

SLL $s1, $s2, 1
Run Code Online (Sandbox Code Playgroud)

要乘以任何数字,您可以将数字拆分为 2 的幂和。例如:

如果更快,您也可以使用减法