.macro ifgtrswap A, B, ?end cmpl (A), (B) bleq end pushr #^m movl (A), R0 movl (B), (A) movl R0, (B) popr #^m end: .endm .entry selection_sort, ^m movl 4(AP), R3 ; n moval 8(AP), R4 ; &x[0] setup_loop: addl3 #4, R4, R5 subl3 #1, R3, R6 next_element: cmpl R3, #1 bleq end ifgtrswap R5, R4 addl #4, R5 sobgtr R6, next_element addl #4, R4 sobgtr R3, setup_loop end: ret .end