• Home
  • Blog
  •   Take the following C code. (  see  file fib.c )   1.)    Compile it and get results. 2.)    Convert C code to MIPS. 3.)   …

  Take the following C code. (  see  file fib.c )   1.)    Compile it and get results. 2.)    Convert C code to MIPS. 3.)   …

0 comments

 

Take the following C code. (  see  file fib.c )

 

1.)    Compile it and get results.

2.)    Convert C code to MIPS.

3.)    Using SPIM report on register step by stem using snip/or cut and copy screen shots.

CODE:

 

 

/* File:     count_sort.c

 * Purpose:  Implement count sort of a list of ints

 *

 * Compile:  gcc -g -Wall -o count_sort count_sort.c

 * Run:      ./count_sort

 *

 * Input:    n (number of elements)

 *           elements of list

 * Output:   sorted list

 *

 * Note:     List is statically allocated.  Recompile if n > 100

 */

#include <stdio.h>

#include <stdlib.h>

 

#define MAX 100

 

void Read_list(int list[], int n);

void Count_sort(int list[], int n);

int  Fnd_pos(int val, int i, int list[], int n);

void Copy_list(int new_list[], int list[], int n);

void Print_list(int list[], int n);

 

int main(void) {

   int list[MAX], n;

 

   scanf(“%d”, &n);

 

   Read_list(list, n);

// Print_list(list, n);

   Count_sort(list, n);

   Print_list(list, n);

 

   return 0;

}  /* main */

 

 

void Read_list(int list[], int n) {

   int i;

 

   for (i = 0; i < n; i++)

      scanf(“%d”, &list[i]);

}   /* Read_list */

 

 

/* Sort list of n elements by “counting”

 * number of elements less than each element,

 * and using the count as the subscript in

 * a new list

 */

void Count_sort(int list[], int n) {

   int i, loc, new_list[MAX];

 

   for (i = 0; i < n; i++) {

      loc = Fnd_pos(list[i], i, list, n);

      new_list[loc] = list[i];

   }

 

   Copy_list(new_list, list, n);

}  /* Count_sort */

 

 

/* Find the position to insert val among the elements    

 * in list by counting the number of elements “less than”

 * val.  In the case of a tie, an element list[j] is

 * considered “less than” val if j < i.

 */

int  Fnd_pos(int val, int i, int list[], int n) {

   int j, count = 0;

 

   for (j = 0; j < n; j++)

      if (list[j] < val)

         count++;

      else if (list[j] == val && j < i)

         count++;

  

   return count;

}  /* Fnd_pos */

 

 

/* Copy contents of new_list into list.  Both store

 * n elements

 */

void Copy_list(int new_list[], int list[], int n) {

   int i;

 

   for (i = 0; i < n; i++)

      list[i] = new_list[i];

}  /* Copy_list */

 

 

void Print_list(int list[], int n) {

   int i;

 

   for (i = 0; i < n; i++)

      printf(“%d “, list[i]);

   printf(“n”);

}  /* Print_list */

 

 

 

About the Author

Follow me


{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}