MIPS子程序通过引用传递参数

时间:2016-03-09 12:07:31

标签: assembly mips mips32

我有这个MIPS代码,使用值

传递的子程序参数进行一些添加
    .data # Data zone
dato1: .word 1
dato2: .word 3
dato3: .word 5
dato4: .word 4
res1: .space 4
res2: .space 4
    .text # Code Zone
    # main Code
main: lw $a0, dato1($0)
lw $a1, dato2($0)
firstcall: jal suma
sw $v0, res1($0)
lw $a0, dato3($0)
lw $a1, dato4($0)
secondcall: jal suma
sw $v0, res2($0)
j fin #End

suma: add $v0, $a0, $a1
jr $ra

fin:
li $v0, 10
syscall

但现在我需要"翻译它"所以sobroutine通过引用使用参数。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好的,修好了。我认为la标记为"加载数组",但它的加载地址。

所以新代码是

    .data # Data zone
dato1: .word 1
dato2: .word 3
dato3: .word 5
dato4: .word 4
res1: .space 4
res2: .space 4
    .text # Code zone
    # Main program
main:
la $a0, dato1
la $a1, dato2
la $a3, res1

firstcall: jal suma
la $a0, dato3
la $a1, dato4
la $a3, res2
secondcall: jal suma
j fin 
suma:
lw $a0, 0($a0)
lw $a1, 0($a1)
add $v0, $a0, $a1
sw $v0, 0($a2)
jr $ra

fin:
li $v0, 10
syscall

现在这应该有效。