我必须在MIPS中实现一个递归系列,这里是高级代码:
int suite(n)
{
if (n == 0) return 0;
else
return (suite(n-1) + 4*n);
}
我的汇编代码有几个问题。第一个是它没有给出预期的结果,因为它每次增加4个。
我的第二个问题是它没有结束。我使用了一个递归的教科书示例作为阶乘。 这是汇编代码:
.data
msg: .asciiz "Entrer un nombre : "
.text
.globl main
main:
#print msg
li $v0,4
la $a0,msg
syscall
#input prompt
li $v0,5
syscall
addi, $a0, $v0, 0
jal suite
suite:
addi $sp, $sp,-12
sw $a1, 8($sp)
sw $a0, 4($sp)
sw $ra, 0($sp)
addi $t0, $0, 1
slt $t0, $a0, $t0
beq $t0,$0 else
addi $sp, $sp, 12
li $v0, 1
syscall
add $v0, $0, $0
jr $ra
else:
add $a1, $a0, $a0
add $a1, $a1, $a1
addi $a0, $a0, -1
jal suite
lw $ra, 0($sp)
lw $a0, 4($sp)
lw $a1, 8($sp)
addi $sp, $sp, 12
add $a0, $v0, $a1
print:
li $v0, 1
syscall
add $v0, $0, $0
jr $ra
end:
任何帮助都会有所帮助。