Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- .global sort_by_age
- sort_by_age:
- push {r4, r5, r6, r7, r8, r9, lr}
- mov r4, r0 // N
- mov r5, r1 // *persons
- mov r6, #0 // i
- mov r7, #1 // j
- b loop
- loop:
- cmp r6, r4
- beq finish
- add r7, r6, #1 // j = i + 1
- mov r8, r6 // index_min = i
- b sorting
- finish:
- pop {r4, r5, r6, r7, r8, r9, lr}
- bx lr
- sorting:
- cmp r7, r4
- beq swap
- mov r0, #48
- mul r0, r0, r7
- add r0, #4
- ldrb r2, [r5, r0] // persons[j].age
- mov r1, #48
- mul r1, r1, r8
- add r1, #4
- ldrb r3, [r5, r1] // persons[index_min].age
- cmp r2, r3
- movlt r8, r7
- add r7, #1
- b sorting
- loop_end:
- add r6, #1
- b loop
- swap:
- cmp r8, r6
- beq loop_end
- mov r9, #0 //helper
- b loop_swap
- loop_swap:
- cmp r9, #48
- beq loop_end
- mov r0, #48
- mul r0, r0, r6
- add r0, r9
- mov r1, #48
- mul r1, r1, r8
- add r1, r9
- ldrb r2, [r5, r0]
- ldrb r3, [r5, r1]
- strb r2, [r5, r1]
- strb r3, [r5, r0]
- add r9, #4
- b loop_swap
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement