Extra Credit Assignment due before Final's Week.

Write the following Merge Sort program in MIPS assembly language. Be sure that you follow the MIPS register conventions!

main: 
   mergeSort(n, numbers, 0, n-1); 
 
 
void mergeSort(int n, int numbers[], int low, int high) { 
   int mid; 
 
   if (low < high) { 
      mid = (low + high) / 2; 
      mergeSort(n, numbers, low, mid); 
      mergeSort(n, numbers, mid+1, high); 
      merge(numbers, low, mid, high); 
   } // end if 
} // end mergeSort 
 
 
void merge(int numbers[], int low, int mid, int high) { 
   int i; 
   int j; 
   int k; 
   int m; 
   int temp[high - low + 1]; 
 
   i = low; 
   j = mid + 1; 
   k = 0; 
   while (i <= mid && j <= high) { 
      if (numbers[i] < numbers[j]) { 
         temp[k] = numbers[i]; 
         i++; 
      } else { 
         temp[k] = numbers[j]; 
         j++; 
      } // end if 
      k++; 
   } // end while 
 
   if (i > mid) { 
      for (m = j; m <= high; m++) { 
         temp[k] = numbers[m]; 
         k++; 
      } // end for 
   } else { 
      for (m = i; m <= mid; m++) { 
         temp[k] = numbers[m]; 
         k++; 
      } // end for 
   } // end if 
 
   k = 0; 
   for (m = low; m <= high; m++) { 
      numbers[m] = temp[k]; 
      k++; 
   } // end for 
 
} // end merge