首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIPS QTSPIM 64位

MIPS QTSPIM 64位
EN

Stack Overflow用户
提问于 2012-10-11 13:20:29
回答 1查看 1.3K关注 0票数 0

所以我使用QTSPIM,我知道MIPS只能处理32位。这也是一个任务,只是为了把它放在那里。

因此,我的目的是能够显示阶乘(14)。目前,我相信程序只能达到阶乘(12)。能够支持64位会有多难。我多少知道我需要存储高32位和低32位?

有人能提供一些提示或示例代码吗?

代码语言:javascript
复制
    # Iterative program to compute n!

            # The value n is entered by the user

            .globl  main
main:
            li      $v0, 5
            syscall                 # Get user input for n
            move    $s0, $v0        # s0: n

            move    $a0, $s0        # put n into first parameter
            jal     factorial
            move    $s1, $v0        # s1: n!

            move    $a0, $s1    
            li      $v0, 1
            syscall                 # display n!            

            li  $v0, 10
            syscall

#-----------------------------------
            # Factorial Function
            #
            # Parameters:  a0 - n
            # Return Values: V0 - n!
factorial:
            #---------------------- Stuff at beginning of function
            addi    $sp, $sp, -12   # space for 3 values
            sw      $ra, 0($sp)
            sw      $s0, 4($sp)
            sw      $s1, 8($sp)

            #---------------------- body of function
            move    $s0, $a0        # s0: n
            li      $s1, 1          # s1: n! (init to 1)
            li      $t1, 1          # t1: loop exit test value
floop:      ble     $s0, $t1, done  # when n decrements down to 1, exit
            mul     $s1, $s1, $s0   # s1 = s1 * n
            addi    $s0, $s0, -1    # n--
            j       floop

            #---------------------- Stuff at end of function
done:       move    $v0, $s1        # put n! into return register
            lw      $ra, 0($sp)
            lw      $s0, 4($sp)
            lw      $s1, 8($sp)
            addi    $sp, $sp, 12
            jr      $ra             # TTFN
EN

回答 1

Stack Overflow用户

发布于 2012-10-12 07:35:41

如果使用双操作数形式的乘法指令MULT $s1,$s0,它会将$s1$s2的64位乘积放入HILO特殊寄存器中。

您可以使用此功能来计算64位阶乘,但需要做一些额外的工作。具体地说,一旦乘积超过32位,您将需要编写代码来执行相当于小学长乘法的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12832709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档