Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- .global sort_by_age
- // r0 - N
- // r1 - pointer
- // r2 - i
- // r3 - j
- // r4 - max_i = n - 2
- // r5 - max_j = n - i - 2
- // r6 - shift
- // r7/r8 = arr[j]/arr[j + 1]
- // r9 - swap_loop
- sort_by_age:
- push {r4-r9, lr}
- mov r4, r0
- sub r4, #2
- mov r2, #-1
- for_i:
- add r2, #1
- cmp r2, r4
- bgt exit
- mov r5, r4
- sub r5, r2
- mov r3, #-1
- for_j:
- add r3, #1
- cmp r3, r5
- bgt for_i
- mov r6, #48
- mul r6, r3
- add r6, #4
- ldr r7, [r1, r6]
- add r6, #48
- ldr r8, [r1, r6]
- cmp r7, r8
- bgt swap
- b for_j
- swap:
- mov r9, #-1
- sub r6, #52
- swap_loop:
- add r9, #1
- cmp r9, #12
- beq for_j
- ldr r7, [r1, r6]
- add r6, #48
- ldr r8, [r1, r6]
- str r7, [r1, r6]
- sub r6, #48
- str r8, [r1, r6]
- add r6, #4
- b swap_loop
- exit:
- pop {r4-r9, lr}
- bx lr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement