fibo::
addi t2, x0, 2
bge a0, t2, work // n > 1
addi a0, x0, 1 // f(0) = f(1) = 1
jalr x0, 0(ra)
work:
addi sp, sp, -24
sd ra, 0(sp)
sd a0, 8(sp) // n
addi a0, a0, -1 // n-1
jal ra, fibo // f(n-1)
sd a0, 16(sp) // f(n-1)
ld a0, 8(sp) // n
addi a0, a0, -2 // n-2
jal ra, fibo // f(n-2)
ld t0, 16(sp) // f(n-1)
add a0, a0, t0 // f(n-2) + f(n-1)
ld ra, 0(sp)
addi sp, sp, 24
jalr x0, 0(ra)