.arch armv6 .eabi_attribute 27, 3 .eabi_attribute 28, 1 .fpu vfp .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .eabi_attribute 26, 2 .eabi_attribute 30, 6 .eabi_attribute 34, 1 .eabi_attribute 18, 4 .file "collatz.c" .text .align 2 .global collatz .type collatz, %function collatz: @ args = 0, pretend = 0, frame = 16 @ frame_needed = 1, uses_anonymous_args = 0 @ link register save eliminated. str fp, [sp, #-4]! add fp, sp, #0 sub sp, sp, #20 str r0, [fp, #-16] mov r3, #0 str r3, [fp, #-8] b .L2 .L5: ldr r3, [fp, #-16] and r3, r3, #1 cmp r3, #0 bne .L3 ldr r3, [fp, #-16] mov r2, r3, lsr #31 add r3, r2, r3 mov r3, r3, asr #1 str r3, [fp, #-16] b .L4 .L3: ldr r2, [fp, #-16] mov r3, r2 mov r3, r3, asl #1 add r3, r3, r2 add r3, r3, #1 str r3, [fp, #-16] .L4: ldr r3, [fp, #-8] add r3, r3, #1 str r3, [fp, #-8] .L2: ldr r3, [fp, #-16] cmp r3, #1 bne .L5 ldr r3, [fp, #-8] mov r0, r3 sub sp, fp, #0 @ sp needed ldr fp, [sp], #4 bx lr .size collatz, .-collatz .align 2 .global fill_collatz_table .type fill_collatz_table, %function fill_collatz_table: @ args = 0, pretend = 0, frame = 16 @ frame_needed = 1, uses_anonymous_args = 0 stmfd sp!, {r4, fp, lr} add fp, sp, #8 sub sp, sp, #20 str r0, [fp, #-24] str r1, [fp, #-28] ldr r3, [fp, #-28] cmp r3, #0 bgt .L8 b .L7 .L8: ldr r3, [fp, #-24] mov r2, #0 str r2, [r3] mov r3, #1 str r3, [fp, #-16] b .L10 .L11: ldr r3, [fp, #-16] mov r3, r3, asl #2 ldr r2, [fp, #-24] add r4, r2, r3 ldr r0, [fp, #-16] bl collatz mov r3, r0 str r3, [r4] ldr r3, [fp, #-16] add r3, r3, #1 str r3, [fp, #-16] .L10: ldr r2, [fp, #-16] ldr r3, [fp, #-28] cmp r2, r3 blt .L11 .L7: sub sp, fp, #8 @ sp needed ldmfd sp!, {r4, fp, pc} .size fill_collatz_table, .-fill_collatz_table .section .rodata .align 2 .LC0: .ascii "%4d --> %8d\012\000" .text .align 2 .global print_table .type print_table, %function print_table: @ args = 0, pretend = 0, frame = 16 @ frame_needed = 1, uses_anonymous_args = 0 stmfd sp!, {fp, lr} add fp, sp, #4 sub sp, sp, #16 str r0, [fp, #-16] str r1, [fp, #-20] mov r3, #1 str r3, [fp, #-8] b .L13 .L14: ldr r3, .L15 ldr r1, [r3] ldr r3, [fp, #-8] mov r3, r3, asl #2 ldr r2, [fp, #-16] add r3, r2, r3 ldr r3, [r3] mov r0, r1 ldr r1, .L15+4 ldr r2, [fp, #-8] bl fprintf ldr r3, [fp, #-8] add r3, r3, #1 str r3, [fp, #-8] .L13: ldr r2, [fp, #-8] ldr r3, [fp, #-20] cmp r2, r3 blt .L14 sub sp, fp, #4 @ sp needed ldmfd sp!, {fp, pc} .L16: .align 2 .L15: .word stdout .word .LC0 .size print_table, .-print_table .align 2 .global main .type main, %function main: @ args = 0, pretend = 0, frame = 816 @ frame_needed = 1, uses_anonymous_args = 0 stmfd sp!, {fp, lr} add fp, sp, #4 sub sp, sp, #816 str r0, [fp, #-816] str r1, [fp, #-820] mov r3, #200 str r3, [fp, #-8] sub r3, fp, #808 mov r0, r3 ldr r1, [fp, #-8] bl fill_collatz_table sub r3, fp, #808 mov r0, r3 ldr r1, [fp, #-8] bl print_table mov r3, #0 mov r0, r3 sub sp, fp, #4 @ sp needed ldmfd sp!, {fp, pc} .size main, .-main .ident "GCC: (Raspbian 4.9.2-10+deb8u2) 4.9.2" .section .note.GNU-stack,"",%progbits