Fall 2013 CSCI 255 Homework 9 (revision of homework 8)

This assignment is due 10:00 AM on 9 November at the HW9 moodle page.

However, if you submit it before Tuesday, 5 November, 10:00 AM, I will give it a preliminary grading before Exam 2 on Wednesday.

The goal and the numbers

The goal of this assignment is to give you a chance to redo most of Homework 8. Getting this to work in Moodle’s grading system can a little challenging, so let’s say that your raw Homework 8 grade is rawHW8 and your raw Homework 9 grade is rawHW9. The values of rawHW8 will range from 0 to 40 and the values of rawHW8 will range from 0 to 10. Then your cooked (recorded in Moodle) Homeworks 8 and 9 will be calculated with the following Java statements.

  cookedHW8 = Math.max(rawHW8, 3*rawHW9) ;
  cookedHW9 = Math.max(rawHW9, (rawHW8+2)/4) ;

The assignment

Fill in the blanks in the following form and submit it by moodle.

Fill in the blanks using your favorite text editor. The simpler the better.


Problem HW9A -- Write the assembly code for the following C statements

 1)  x = 0 ;


 2)  i = 0 ;


 3)  ++i ;


 4)  j = V[i] ;


 5)  x = x + (j & 0x3) ;


 6)  j = j >> 2 ;



Problem HW9B -- translate the following C code into C where
  the only C control structures that can be used are:
     goto LABEL ;
     if (VAR RELOP 0) goto LABEL ;
  LABEL can be any label in your code.
  VAR can be any variable in your code.
  RELOP can be any of the C equality or relational operators: == != < <= > >=
  This means no while, for, do, else, or unrestricted if.
  
    for (i=0; i<100; ++i) {
      // ...
      while (j != 0) {
        // ...
      }
    }

Problem HW9C -- Put HW9A and HW9B together to solve the original Homework 8.
   That is, write PIC assembly for the following:
      x = 0 ;
      for (i=0; i<100; ++i) {
        j = V[i] ;
        while (j != 0) {
          x = x + (j & 0x3) ;
          j = j >> 2 ;
        }    
      }