@ function.s /* assembly function which uses r4 - r11 this will break everything */ .global function1 function1: @ trash all the locals mov r4, #4 mov r5, #5 mov r6, #6 mov r7, #7 mov r8, #8 mov r9, #9 mov r10, #10 mov r11, #11 @ reutrn 42 mov r0, #42 mov pc, lr .global function2 function2: @ make space on the stack sub sp, sp, #32 @ push all the regs str r4, [sp, #0] str r5, [sp, #4] str r6, [sp, #8] str r7, [sp, #12] str r8, [sp, #16] str r9, [sp, #20] str r10, [sp, #24] str r11, [sp, #28] @ trash all the locals mov r4, #4 mov r5, #5 mov r6, #6 mov r7, #7 mov r8, #8 mov r9, #9 mov r10, #10 mov r11, #11 @ restore all regs ldr r4, [sp, #0] ldr r5, [sp, #4] ldr r6, [sp, #8] ldr r7, [sp, #12] ldr r8, [sp, #16] ldr r9, [sp, #20] ldr r10, [sp, #24] ldr r11, [sp, #28] @ clean up stack add sp, sp, #32 @ reutrn 42 mov r0, #42 mov pc, lr