首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIPS程序设计

MIPS程序设计
EN

Stack Overflow用户
提问于 2014-09-21 21:14:15
回答 1查看 1.2K关注 0票数 1

我目前正在写一个mips程序,做阶乘。我用java编写了阶乘示例,并且在java代码下面还有MIPS程序。我已经把大部分的MIPS都写出来了,但是我不明白为什么它没有正确的处理。任何提示都将不胜感激。

代码语言:javascript
复制
    Java code for the iteratve factorial algorithm:
import java.util.Scanner;
public class FactorMachine {
    public static void main(String[] args) {
        int input;
        Scanner in = new Scanner(System.in);
        System.out.println("Enter an integer to be factored: ");
        input = in.nextInt();
        {
            int x, factorial = 1;
            for (x = input; x > 1; x--)
                factorial *= x;
            System.out.println("Factorial #" + input + " is " + factorial);
        }
    }
}

MIPS代码:

代码语言:javascript
复制
    .data
p1: .asciiz "Enter an integer to be factored: "
ans1:   .asciiz "Factorial # "
ans2:   .asciiz " is "
ans3:   .asciiz "\n\n"

    .text
    .globl main

main:   li $v0, 4
    la $a0, p1
    syscall

    li $v0, 5
    syscall
    move $t0, $v0   #this is input

    li $t1, 1       #initilize factorial
    move $t2, $t0       #initilize x


loop:
    blt $t2, 1, done
    sub $t2, $t2, 1
    mul $t3, $t1, $t0
    j loop



done:
    li $v0, 4
    la $a0, ans1
    syscall

    li $v0, 1
    move $a0, $t3
    syscall

    jr $ra
EN

回答 1

Stack Overflow用户

发布于 2014-09-22 10:17:10

让我们看一下Java代码的作用(为了清楚起见,我将X *= Y更改为X = X * Y ):

代码语言:javascript
复制
    for (x = input; x > 1; x--)
        factorial = factorial * x;

现在让我们看看您的程序集代码:

代码语言:javascript
复制
move $t2, $t0       #initilize x
loop:
    blt $t2, 1, done
    sub $t2, $t2, 1
    mul $t3, $t1, $t0
    j loop

以及在Java中对应的内容:

代码语言:javascript
复制
for (x = input; x >= 1; ) {
    x--;
    temp = factorial * input;
}

注意到区别了吗?你是:

  1. 在乘法之前对x进行分解,而不是像原来的Java代码那样。
  2. input ($t0)而不是x ($t2)。
  3. 将乘法结果存储在不同的寄存器中,而不是将其写回factorial ($t1)。因此,您将始终得到1 * input的乘积,这当然等于input
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25963935

复制
相关文章

相似问题

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