.text .align 2 .global max .syntax unified max: @ link register save eliminated. str fp, [sp, #-4]! mov fp, sp sub sp, sp, #8 str r0, [fp, #-4] str r1, [fp, #-8] ldr r2, [fp, #-8] ldr r3, [fp, #-4] cmp r2, r3 movge r1, r2 movlt r1, r3 mov r0, r1 mov sp, fp ldr fp, [sp], #4 bx lr .size max, .-max .align 2 .global maxOf3 .fpu vfp .type maxOf3, %function maxOf3: stmfd sp!, {fp, lr} @ or push {fp, lr} add fp, sp, #4 sub sp, sp, #12 str r0, [fp, #-8] str r1, [fp, #-12] str r2, [fp, #-16] ldr r1, [fp, #-12] ldr r0, [fp, #-8] bl max mov r3, r0 ldr r1, [fp, #-16] mov r0, r3 bl max mov r3, r0 mov r0, r3 sub sp, fp, #4 ldmfd sp!, {fp, pc} @ or pop {fp, pc} .section .rodata .align 2 .LC0: .ascii "%d%d%d\000" .align 2 .LC1: .ascii "Max is %d\012\000" .text .align 2 .global main .type main, %function main: push {fp, lr} add fp, sp, #4 sub sp, sp, #16 sub r3, fp, #20 sub r2, fp, #16 sub r1, fp, #12 ldr r0, .L7 bl __isoc99_scanf ldr r3, [fp, #-12] ldr r1, [fp, #-16] ldr r2, [fp, #-20] mov r0, r3 bl maxOf3 str r0, [fp, #-8] ldr r1, [fp, #-8] ldr r0, =.LC1 bl printf mov r3, #0 mov r0, r3 sub sp, fp, #4 pop {fp, pc} .L8: .align 2 .L7: .word .LC0