Recursion ARMSim递归

Recursion ARMSim递归,recursion,fibonacci,Recursion,Fibonacci,ARMsim的新手,试图找出斐波那契数列中的递归。如果我输入n,我想通过递归的情况找到这个索引处斐波那契序列的值: int fib(int N) { # if (N == 0) return 0; # if (N == 1) return 1; # return fib(N-1) + fib(N-2); # } 我当前的代码: .text .global _start _start: mov r1 , #8 fib: SUB sp,sp,#8 STR lr,[sp,#0] STR r1,[

ARMsim的新手,试图找出斐波那契数列中的递归。如果我输入n,我想通过递归的情况找到这个索引处斐波那契序列的值:

int fib(int N) {
# if (N == 0) return 0;
# if (N == 1) return 1;
# return fib(N-1) + fib(N-2);
# }
我当前的代码:

.text
.global _start

_start:
mov r1 , #8

fib:
SUB sp,sp,#8
STR lr,[sp,#0]
STR r1,[sp,#4]

CMP r1, #1
BGT Else

MOV r1, #1
ADD sp,sp,#8

MOV pc,lr

Else:
SUB r1,r1,#1
BL fib
MOV r2,r1
LDR r1,[sp,#4]
SUB r1,r1,#1
BL fib
MOV r3,r1
LDR r1,[sp,#4]
LDR lr,[sp,#0]
ADD sp,sp,#8
ADD r1,r1,r2
ADD r1,r1,r3
MOV pc,lr
我想知道我哪里做错了。 任何建议,谢谢