Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * fibon_iter.asm with "-O1 -fno-inline"
- */
- .align 2
- .global fibonacci
- .type fibonacci, %function
- fibonacci:
- @ args = 0, pretend = 0, frame = 512
- @ frame_needed = 0, uses_anonymous_args = 0
- @ link register save eliminated.
- stmfd sp!, {r4, r5, r6, r7, r8, r9}
- sub sp, sp, #512
- ldr r7, .L6
- .LPIC0:
- add r7, pc, r7
- mov r5, #0
- add r6, sp, #512
- strb r0, [r6, #-512]!
- mov r2, r5
- mov r3, r5
- mov ip, #1
- mov r0, r5
- mov r1, r5
- .L5:
- sub r5, ip, #1
- mov r5, r5, asl #16
- mov r8, r5, lsr #16
- add r9, r6, r8
- ldrb r4, [r6, r5, lsr #16] @ zero_extendqisi2
- cmp r4, #1
- bls .L2
- sub r8, r4, #1
- strb r8, [r6, r5, lsr #16]
- sub r4, r4, #2
- strb r4, [r9, #1]
- add ip, ip, #1
- mov ip, ip, asl #16
- mov ip, ip, lsr #16
- b .L3
- .L2:
- and r4, r4, #255
- mov r5, #0
- adds r0, r0, r4
- adc r1, r1, r5
- mov ip, r8
- .L3:
- adds r2, r2, #1
- adc r3, r3, #0
- cmp ip, #0
- bne .L5
- ldr ip, .L6+4
- ldr ip, [r7, ip]
- strd r2, [ip]
- add sp, sp, #512
- @ sp needed
- ldmfd sp!, {r4, r5, r6, r7, r8, r9}
- bx lr
- .L7:
- .align 2
- .L6:
- .word _GLOBAL_OFFSET_TABLE_-(.LPIC0+8)
- .word loop_count(GOT)
- .size fibonacci, .-fibonacci
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement