我正在尝试在Simple RISC中创建一个简单的程序。我需要在while循环中进行函数调用(返回类型为int)。可以在不使用堆栈指针的情况下实现吗? (附上我的C ++代码供参考)
while(k>0){
int p=k%10;
int r=power(p); //power returns p^p
result+=r;
k=k/10;
}
答案 0 :(得分:0)
据我从标签中了解,您希望在riscv上实现该功能。
是的,你可以在没有堆栈指针的情况下完成它,它是一个非常简单的函数,但是如果它更复杂,你也可以避免使用堆栈指针,但你需要保存临时变量并在堆栈的某处注册
以下是代码:
;a0 function arg, a3 return value
;x0 is hardwired to 0,
.text
.globl power
.type power , @function
power:
add a3,x0,1
add a4,a0,0
power_0:
mul a3,a3,a0
add a4,a4,-1
bnez a4,power_0
jr ra
我没有看到避免堆栈指针的重点,但如果你说明了完整的问题,那么可以有更好的解决方案