Objective
To learn the fundamentals of MIPS architecture through the use of its assembly language and the SPIM MIPS simulator.
Description
You are to write a complete program in MIPS assembly language that implements the appended C program. This program contains four functions in addition to the main() function. Your solution must implement all five routines as they have been coded in the example. In essence, your solution must follow their dependence as determined by the way they are invoked in the C code presented below. You are to use the MIPS simulator QtSpim. A list of SPIM system calls is provided in the lecture notes as also supplied for quick reference as follows:
What to Submit
1.Copies of all .asm files you created for this exercise as well as
2.Screenshots of the results produced by your solution.
All above listed information must be placed in a Microsoft compressed (zipped) folder (.zip).
#include <stdio.h> int getMax(int arr[], int n) { int mx = arr[0]; for (int i = 1; i < n; i++) if (arr[i] > mx) mx = arr[i]; return mx; } void countSort(int arr[], int n, int exp) { int output[n]; int i, count[10] = { 0 }; for (i = 0; i < n; i++) count[(arr[i] / exp) % 10]++; for (i = 1; i < 10; i++) count[i] += count[i - 1]; for (i = n - 1; i >= 0; i--) { output[count[(arr[i] / exp) % 10] - 1] = arr[i]; count[(arr[i] / exp) % 10]--; } for (i = 0; i < n; i++) arr[i] = output[i]; } void radixSort(int arr[], int n) { int m = getMax(arr, n); for (int exp = 1; m / exp > 0; exp *= 10) countSort(arr, n, exp); } void printData(int arr[], int n) { for (int i = 0; i < n; i++) printf("%d \n", arr[i]); } |