# Interative Fibonnaci # %rdi is the number for iterations. fib: push %rbp # push previous base pointer movq %rsp,%rbp # setup new base pointer if: cmpq $1, %rdi # if (a-1) > 0: goto loops jg loops quick: movq %rdi, %rax jmp return loops: movq %rdi, %r8 # i (r8) = a movq $1, %rdi # minus_one (rdi) = 1 movq $0, %rax # minus_two (rax) = 0 loopb: movq %rdi, %9 # r = minus_one addq %rax, %rdi # minus_one += minus_two movq %9, %rax # minus_two = r subq $1, %r8 # i-- cmpq $0, %r8 # if a > 0 jg loopb return: leave # Clean up ret # return m (rax)