//by Hawhk 2020-11-03
.text
.global main
@by Hawhk
@date 2020-11-03
@lang ARMv5

fib:
    stmdb sp!, {lr, r1} @lägg kommandot som ska köras när klar samt r1 på stacken
    cmp r1, #1 @ gämför r1 med 1 
    ble return @ om mindre eller lika med 1 hoppa till return
    sub r1, r1, #1 @ subtrahera r1 med 1
    bl fib @ hoppa till fib
    sub r1, r1, #1 @ subtrahera r1 med 1
    bl fib @ hoppa till fib
    ldmia sp!, {pc, r1} @ hoppa till komandot som ska köras nästa och sätt r1 till gammla r1

return:
    stmdb sp!, {lr}  @lägg kommandot som ska köras när klar på stacken
    add r0, r0, r1 @ addera resultatet med r1 
    ldmia sp!, {pc} @ hoppa till komandot som ska köras nästa

printf:
    MOV r0, #1 @ Load 1 into register r0 (stdout handle)
    SWI 0x6b @ Print integer in register r1 to stdout
    bx lr @ gå till nästa kommando
    

main:
    stmdb sp!, {lr} @lägg kommandot som ska köras när klar på stacken
    mov r1, #10 @ sätr r1 till 10 // ändra denna till vilket tal i serien du vill ha.
    mov r0, #0 @ sätt r0 till 0
    BL fib @ hoppa till fib
    MOV r1, r0 @ sätt r1 till r0
    BL printf @ hoppa till printf
    ldmia sp!, {pc} @ hoppa till komandot som ska köras nästa
.end
