[SOLVED] CMI - Assignment 3

30.00 $

Category:

Description

5/5 - (2 votes)

Computing Machinery I

Sorting One-Dimensional Arrays

 

Create an ARMv8 assembly language program that implements the following algorithm:

 

#define  SIZE 50

 

int main()

{

int v[SIZE], i, j, min, temp;

 

/*  Initialize array to random positive integers, mod 256  */

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

v[i] = rand() & 0xFF;

printf(“v[%d]: %d\n”, i, v[i]);

}

 

/*  Sort the array using a selection sort  */

for (i = 0; i < SIZE – 1; i++) {

/*  Find the least element in the right subarray  */

min = i;

for (j = i + 1; j < SIZE; j++) {

/*  Compare elements  */

if (v[j] < v[min])

min = j;

}

 

/*  Swap elements  */

temp = v[min];

v[min] = v[i];

v[i] = temp;

}

 

/*  Print out the sorted array  */

printf(“\nSorted array:\n”);

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

printf(“v[%d]: %d\n”, i, v[i]);

 

return 0;

}

 

Create space on the stack to store all local variables, using the techniques described in lectures. Use m4 macros or assembler equates for all stack variable offsets. Optimize your code so that it uses as few instructions as possible. Be sure, however, that you always read or write memory when using or assigning to the local variables. Name the program assign3.asm.

 

Also run the program in gdb, first displaying the contents of the array before sorting, and then displaying it again once the sort is complete (use the x command to examine memory). You should show that the algorithm is working as expected. Capture the gdb session using the script UNIX command, and name the output file script.txt.