gpt4 book ai didi

assembly - 使用 MIPS 汇编中的逻辑移位乘以 2 的幂

转载 作者:行者123 更新时间:2023-12-01 14:35:03 26 4
gpt4 key购买 nike

有人可以指点我如何使用 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"

最佳答案

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

SLL $s1, $s2, 3       # $s1 = $s2 * 8   shift left by 3 bit-positions

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

  • n*10 = n*8 + n*2 = (n << 3) + (n << 1)

      SLL $t1, $s2, 1
    SLL $t2, $s2, 3
    ADD $s2, $t1, $t2

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

  • n*15 = n*16 - n = (n << 4) - n

      SLL $t1, $s2, 4
    SUB $s1, $t1, $s2

关于assembly - 使用 MIPS 汇编中的逻辑移位乘以 2 的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18812319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com