MIPS jal每次使用不同的参数值执行相同的过程3次,并打印3个单独的值

MIPS jal每次使用不同的参数值执行相同的过程3次,并打印3个单独的值,mips,Mips,我一直得到“p(x)=10”,但我需要打印3个单独的值,例如“p(x)=10”、“p(x)=36”和“p(x)=21”。我做错了什么,使我无法打印这三个值 .data c0: .word 1 c1: .word -3 c2: .word 2 x0: .word 3 x1: .word 5 x2: .word 4 result: .word 0 string: .asc

我一直得到“p(x)=10”,但我需要打印3个单独的值,例如“p(x)=10”、“p(x)=36”和“p(x)=21”。我做错了什么,使我无法打印这三个值

.data

        c0: .word 1
        c1: .word -3
        c2: .word 2
        x0: .word 3
        x1: .word 5
        x2: .word 4
        result: .word 0
        string: .asciiz "\np(x)="
   
.text

main:

    #$t0 = 
    
    lw $t0, c0($zero) 
    lw $t1, c1($zero) 
    lw $t2, c2($zero) 
    lw $t3, result($zero) 
    lw $a0, x0($zero) 
    jal poly
        
    
    lw $a0, x1($zero) 
    jal poly
    
    lw $a0, x2($zero)
    jal poly
    
    
    li $v0, 10
    syscall
poly:   
    
    
    mul $t4, $a0, $a0  #$t4 = 3 * 3
    mul $t5, $t2, $t4  #$t5 = 2 * 9
    mul $t4, $t1, $a0  #$t4 = -3 * 3 
    add $t4, $t5, $t4  #$t4 = 18 - 9
    add $t3, $t4, $t0  #$t 9 + 1
        
    jal printStringInt
    
    jr $ra

printInt:

    # $a0 has integer
    
    li $v0, 1
    add $a0, $zero, $t3
    syscall
    
    jr $ra

printString:

    # $a0 has string address
    li $v0, 4
    la $a0, string
    syscall
    
    jr $ra

printStringInt:
    # $a0 is string address
    # $a1 is int
    
    # save return address so not overwritten
    # save $a1 so not overwritten
    
    addiu $sp, $sp, -8
    sw $a1, 4($sp)
    sw $ra, 0($sp)
    
    
    # print string
    
    jal printString
    
    # print int
    # get argument from stack
    
    lw $a0, 4($sp)
    jal printInt
    

    lw $ra, 0($sp)
    addiu $sp, $sp, 8
    
    jr $ra
这是我必须在MIPS中实现的程序

int c0 = 1;
int c1 = -3;         
int c2 = 2;         

int x0 = 3;
int x1 = 5;
int x2 = 4;



main(){

int result;     // local variable, use register

result = poly(x0);
print "p(x)=", result;

result = poly(x1);
print "p(x)=", result;

result = poly(x2);
print "p(x)=", result;

}



int poly(int x){

  return c2*x^2 + c1*x + c0;

}

欢迎来到SO!我想你忘了保存和恢复
$ra
。在
poly
内部,与您在
printStringInt
中使用的方法相同。