ARMSim递归

时间:2017-04-11 09:41:40

标签: recursion fibonacci

ARMsim的新手,试图找出Fibonacci数列中的递归。如果我输入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

我想知道我哪里出错了。 任何建议表示赞赏!

0 个答案:

没有答案