/* * C Program sorts the numbers in ascending order using selection sort (selection_sort.c) */ /* #include #define MAXSIZE 1000 void swap (int *a, int *b) { int temp = *a; *a = *b; *b = temp; } void selection_sort(int list[], int size) { int i, j, min, small, index; for (i = 0; i < size-1; i++) { min = list[i]; index = i; small = list[index]; for (j = i + 1; j < size; j++) { if (small > list[j]) { // select smallest from j to size-1 index = j; // remember its index for late swap small = list[index]; } } if (min > small) { // swap swap(&list[i], &list[index]); // 0 to i sorted } } } int main() { int array[MAXSIZE]; int i, num; printf("enter the number of elements n = "); scanf("%d", &num); printf("enter %d elements one by one\n", num); for (i = 0; i < num; i++) { scanf("%d", &array[i]); } printf("\nthe original array is "); for (i = 0; i < num; i++) { printf("%d ", array[i]); } printf("\n"); selection_sort(array, num); printf("the sorted array is "); for (i = 0; i < num; i++) { printf("%d ", array[i]); } printf("\n"); return 0; } */ .text swap: addi sp,sp,-48 sw s0,44(sp) addi s0,sp,48 sw a0,-36(s0) sw a1,-40(s0) lw a5,-36(s0) lw a5,0(a5) sw a5,-20(s0) lw a5,-40(s0) lw a4,0(a5) lw a5,-36(s0) sw a4,0(a5) lw a5,-40(s0) lw a4,-20(s0) sw a4,0(a5) nop lw s0,44(sp) addi sp,sp,48 jr ra selection_sort: addi sp,sp,-64 sw ra,60(sp) sw s0,56(sp) addi s0,sp,64 sw a0,-52(s0) sw a1,-56(s0) sw zero,-20(s0) j .L3 .L8: lw a5,-20(s0) slli a5,a5,2 lw a4,-52(s0) add a5,a4,a5 lw a5,0(a5) sw a5,-36(s0) lw a5,-20(s0) sw a5,-32(s0) lw a5,-32(s0) slli a5,a5,2 lw a4,-52(s0) add a5,a4,a5 lw a5,0(a5) sw a5,-28(s0) lw a5,-20(s0) addi a5,a5,1 sw a5,-24(s0) j .L4 .L6: lw a5,-24(s0) slli a5,a5,2 lw a4,-52(s0) add a5,a4,a5 lw a5,0(a5) lw a4,-28(s0) ble a4,a5,.L5 lw a5,-24(s0) sw a5,-32(s0) lw a5,-32(s0) slli a5,a5,2 lw a4,-52(s0) add a5,a4,a5 lw a5,0(a5) sw a5,-28(s0) .L5: lw a5,-24(s0) addi a5,a5,1 sw a5,-24(s0) .L4: lw a4,-24(s0) lw a5,-56(s0) blt a4,a5,.L6 lw a4,-36(s0) lw a5,-28(s0) ble a4,a5,.L7 lw a5,-20(s0) slli a5,a5,2 lw a4,-52(s0) add a3,a4,a5 lw a5,-32(s0) slli a5,a5,2 lw a4,-52(s0) add a5,a4,a5 mv a1,a5 mv a0,a3 call swap .L7: lw a5,-20(s0) addi a5,a5,1 sw a5,-20(s0) .L3: lw a5,-56(s0) addi a5,a5,-1 lw a4,-20(s0) blt a4,a5,.L8 nop lw ra,60(sp) lw s0,56(sp) addi sp,sp,64 jr ra main: addi sp,sp,-2032 sw ra,2028(sp) sw s0,2024(sp) addi s0,sp,2032 addi sp,sp,-2000 lui a5,%hi(.LC0) addi a0,a5,%lo(.LC0) call printf li a5,-4096 addi a5,a5,88 addi a4,s0,-16 add a5,a4,a5 mv a1,a5 lui a5,%hi(.LC1) addi a0,a5,%lo(.LC1) call scanf li a5,-4096 addi a4,s0,-16 add a5,a4,a5 lw a5,88(a5) mv a1,a5 lui a5,%hi(.LC2) addi a0,a5,%lo(.LC2) call printf sw zero,-20(s0) j .L10 .L11: li a5,-4096 addi a5,a5,92 addi a4,s0,-16 add a4,a4,a5 lw a5,-20(s0) slli a5,a5,2 add a5,a4,a5 mv a1,a5 lui a5,%hi(.LC1) addi a0,a5,%lo(.LC1) call scanf lw a5,-20(s0) addi a5,a5,1 sw a5,-20(s0) .L10: li a5,-4096 addi a4,s0,-16 add a5,a4,a5 lw a5,88(a5) lw a4,-20(s0) blt a4,a5,.L11 lui a5,%hi(.LC3) addi a0,a5,%lo(.LC3) call printf sw zero,-20(s0) j .L12 .L13: li a5,-4096 addi a4,s0,-16 add a4,a4,a5 lw a5,-20(s0) slli a5,a5,2 add a5,a4,a5 lw a5,92(a5) mv a1,a5 lui a5,%hi(.LC4) addi a0,a5,%lo(.LC4) call printf lw a5,-20(s0) addi a5,a5,1 sw a5,-20(s0) .L12: li a5,-4096 addi a4,s0,-16 add a5,a4,a5 lw a5,88(a5) lw a4,-20(s0) blt a4,a5,.L13 li a0,10 call putchar li a5,-4096 addi a4,s0,-16 add a5,a4,a5 lw a4,88(a5) li a5,-4096 addi a5,a5,92 addi a3,s0,-16 add a5,a3,a5 mv a1,a4 mv a0,a5 call selection_sort lui a5,%hi(.LC5) addi a0,a5,%lo(.LC5) call printf sw zero,-20(s0) j .L14 .L15: li a5,-4096 addi a4,s0,-16 add a4,a4,a5 lw a5,-20(s0) slli a5,a5,2 add a5,a4,a5 lw a5,92(a5) mv a1,a5 lui a5,%hi(.LC4) addi a0,a5,%lo(.LC4) call printf lw a5,-20(s0) addi a5,a5,1 sw a5,-20(s0) .L14: li a5,-4096 addi a4,s0,-16 add a5,a4,a5 lw a5,88(a5) lw a4,-20(s0) blt a4,a5,.L15 li a0,10 call putchar li a5,0 mv a0,a5 addi sp,sp,2000 lw ra,2028(sp) lw s0,2024(sp) addi sp,sp,2032 jr ra .data .LC0: .string "enter the number of elements n = " .LC1: .string "%d" .LC2: .string "enter %d elements one by one\n" .LC3: .string "\nthe original array is " .LC4: .string "%d " .LC5: .string "the sorted array is " .end