C 在mips中使用“";推;没有「;“流行音乐”;
c代码:C 在mips中使用“";推;没有「;“流行音乐”;,c,assembly,mips,C,Assembly,Mips,c代码: int recursive_power (int base, int power) { if (power <=0) return (-1); else if (power ==1) return (base); else return (base*recursive_power (base, power-1)); } int递归幂(int-base,int-power) { 如果(power您将
int recursive_power (int base, int power)
{
if (power <=0)
return (-1);
else if (power ==1)
return (base);
else
return (base*recursive_power (base, power-1)); }
int递归幂(int-base,int-power)
{
如果(power您将pop放置在错误的位置。您每次进入函数时都会将两个寄存器推到堆栈上,因此每次从函数返回时都应该将它们弹出:
jal recursive_power #call recursive_power (base,power-1)
mul $v0, $a0, $v0 #return value is $v0*base
j return2
return1: addi $v0,$a0, 0 #$v0=base
return2:
lw $ra, 0($sp) #Restore original return address
lw $a1, 4($sp) #Restore original value of power
addi $sp, $sp, 8 #Restore stack
jr $ra #Return to caller address
您将pop放置在错误的位置。每次进入函数时,您都会将两个寄存器推到堆栈上,因此每次从函数返回时都应该将它们弹出:
jal recursive_power #call recursive_power (base,power-1)
mul $v0, $a0, $v0 #return value is $v0*base
j return2
return1: addi $v0,$a0, 0 #$v0=base
return2:
lw $ra, 0($sp) #Restore original return address
lw $a1, 4($sp) #Restore original value of power
addi $sp, $sp, 8 #Restore stack
jr $ra #Return to caller address