Question: FIB ; 3 * FIB ( n - 1 ) - 3 * FIB ( n - 2 ) + FIB ( n - 3

FIB
; 3*FIB(n-1)-3*FIB(n-2)+ FIB(n-3)
ADD R6, R6, #-1
STR R7, R6, #0 ; push return addr
ADD R6, R6, #-1
STR R5, R6, #0 ; push prev frame ptr
ADD R5, R6, #0
; BASE CASES
; checking n ==0
LDR R0, R5, #3
BRnp END_IF_0
ADD R0, R0, #1
STR R0, R5, #2
BRnzp RETURN_FIB
END_IF_0
; checking n ==1
LDR R0, R5, #3
ADD R0, R0, #-1
BRnp END_IF_1
ADD R0, R0, #3
STR R0, R5, #2
BRnzp RETURN_FIB
END_IF_1
; checking n ==2
LDR R0, R5, #3
ADD R0, R0, #-2
BRnp END_IF_2
ADD R0, R0, #6
STR R0, R5, #2
BRnzp RETURN_FIB
END_IF_2
ADD R6, R6, #-1
LDR R0, R5, #3
ADD R0, R0, #-1
STR R0, R6, #0 ; push argument (n-1)
ADD R6, R6, #-1 ; push return value
JSR FIB
LDR R0, R6, #0 ; return value
ADD R1, R0, R0
ADD R0, R0, R1 ; 3* FIB(n-1)
STR R0, R5, #2 ; put in return value x5FF8+2= x5FFA
ADD R6, R6, #1 ; pop return value
ADD R6, R6, #1 ; pop arg
ADD R6, R6, #-1
LDR R0, R5, #3
ADD R0, R0, #-2
STR R0, R6, #0 ; push argument (n-2)
ADD R6, R6, #-1 ; push return value
JSR FIB
LDR R0, R6, #0 ; return value
ADD R1, R0, R0
ADD R0, R1, R0 ; 3* return value
; 3*FIB(n-1)-3*FIB(n-2)
LDR R1, R5, #2
NOT R0, R0
ADD R0, R0, #1 ; two's
ADD R0, R0, R1
STR R0, R5, #2 ; x5FF8+2= x5FFA
ADD R6, R6, #1 ; pop return value
ADD R6, R6, #1 ; pop arg
ADD R6, R6, #-1
LDR R0, R5, #3
ADD R0, R0, #-3
STR R0, R6, #0 ; push arg (n-3)
ADD R6, R6, #-1 ; return value
JSR FIB
LDR R0, R6, #0 ; return value
ADD R6, R6, #1 ; popping rv
ADD R6, R6, #1 ; pop arg
LDR R1, R5, #2
ADD R0, R0, R1
STR R0, R5, #2 ; complete calc and put return value x5FF8+2= x5FFA
RETURN_FIB
LDR R5, R6, #0
ADD R6, R6, #1 ; pop prev frame ptr
LDR R7, R6, #0
ADD R6, R6, #1 ; pop return address
RET
help fix this code to get the desired outputs for 1-9
F(0)=0
F(1)=1, I am getting 3
F(2)=1, I am getting 6
F(3)=2, I am getting 10
F(4)=3, I am getting 15
F(5)=5, I am getting 21
F(6)=8, I am getting 28
F(9)=34, I am getting 55

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!