Project 1 Solution

$30.00 $24.00

Problems (to be solved on LEGv8 assembly; all code should adhere to standard register, stack use, paremeter passing, etc. conventions, as discussed in  lecture and the textbook): * Implement a swap procedure that swaps the values in two different 8-byte   integers in memory. * Implement a find smallest procedure that finds the smallest 8-byte…

5/5 – (2 votes)

You’ll get a: zip file solution

 

Description

5/5 – (2 votes)

Problems (to be solved on LEGv8 assembly; all code should adhere to standard

register, stack use, paremeter passing, etc. conventions, as discussed in 

lecture and the textbook):

* Implement a swap procedure that swaps the values in two different 8-byte

  integers in memory.

* Implement a find smallest procedure that finds the smallest 8-byte integer

  in an array and returns its index.

* Implement selection sort using your find smallest and swap procedures.  To

  be clear, selection sort can be more efficiently implemented without any

  helper procedures, but implementing it in assembly is easier with the

  helpers–and it gives you experience with procedure calls and stack

  manipulation–so we are requiring that you do it this way.

  Pseudocode for the selection sort:

“`

    SelectionSort(array)

      for each element in array in order from first to last:

        swap element with smallest element in the subarray that it begins

“`

* Implement a procedure to fill an array with consecutive 8-byte integers in

  reverse-sorted (high to low) order

* Implement a “main” procedure that ties all of this together by:

** Calling your fill procedure to create a reverse sorted array in main

   memory.

** Sorting that array using your selection sort implementation

** Program ends with a DUMP

Note that your procedures should handle arrays of any size, so passing an 

array requires two parameters: the array, and the number of elements in that

array!

How to get started:

1) Get an environment running

2) Write all of your algorithms in C, or some similar language.  If you do it

   in, e.g., Java, keep it C like (use only primitives and arrays).  Make

   sure your code works.  You’ll use it to help you reason about your

   assembly.  In a sense, you’ll compile it by hand.

3) Write the array builder first.  It will configure your memory in a way

   that makes it easy to check that other procedures work.

4) Do swap next.  Run your array builder.  Then test that you can swap any

   arbitrary pair of values in the array.

5) Find smallest is next.  If you run it on your whole array, it will always

   return the array size – 1 (if you haven’t swapped).  It should also work

   on some arbitrary sub array specified by changing the parameters (hint,

   there need to be two of them).

6) Finally do selection sort (you should have been developing “main” all 

   along to test your other procedures).

Gotchas:

Be very careful about the 8s you’re going to need all over the place.  It’s

easy to forget them, and then things simply don’t work!

What to turn in:

A single file, assignment1.legv8asm, containing your program.

Using legv8emul:

Running the emulator with no parameters will give usage instructions.  Code

may have comments.  Comments start with // and continue to the end of the

line (actually, I never check for the second slash, so technically they start

with /).

There are two debugging “instructions” available to you:

“`

  PRNT reg

“`

will print the contents of reg.

“`

  DUMP

“`

will print a complete core dump, including all registers, and display the

program code with an arrow (–>) indicating the line where the dump was

produced.  This arrow is not particularly useful when you explicitly DUMP,

but it is useful when the emulator generates a core dump for you (below).

“`

  PRNL

“`

will print a blank line.

“`

  HALT

“`

will terminate the simulation.

Unlike a real computer, the emulator will start up with all registers and

memory initialized to zero (except for SP and FP, which are initialized to

the size of the stack).

Also unlike a real computer, the emulator will instantly crash when you

attempt to access an address outside your address space.  Upon crashing, the

emulator will dump core with the arrow indicating the line that attempted to

make the erroneous access.

Project 1 Solution
$30.00 $24.00