Due Date: 9/21 (fri.)
Assignment:
Problem A (1 pt). Consider the following C language for-loop:
for (i = 0; i < 100; i++) j = j + i;The following is a MIPS assembly language implementation of the for-loop assuming that $3 and $4 are used to store i and j, respectively.
add $3,$0,$0 # i = 0; Loop: slti $1,$3,100 # $1 = 1 if i < 100 beq $1,$0,Skip # if $1 == 0 (i.e., i >= 100) then skip for-loop add $4,$4,$3 # j = j + i; addi $3,$3,1 # i++; beq $0,$0,Loop # go back to beginning of for-loop Skip:Write the machine code for the MIPS assembly language instructions. You may use decimal numbers (positive and negative ones) to fill in the fields. Note that all instructions and their machine code versions can be found in the back cover of the textbook.
Problem B. (1 pt.)
Consider the following C function:
ordered(int i, int j, int k) /* returns 1 if i, j, and k are nondecreasing*/
{ if (i <= j && j <= k) return 1;
else return 0;
}
Write a MIPS assembly language implementation of this function assuming
Textbook Problem 3.6. You don't need to use the simulator as suggested in the problem (1 pt)
Textbook Problem 3.9. (1 pt).
Objective: Introduction to mcc compiler.
netscape &
"set path=($path ~ee361/bin)".
This will get you access to the "mcc" compiler.
Problem C (5 pts). The mcc compiler.
For this problem , you will be using the mcc compiler to compile some simple C programs. There are five subproblems to work on.
First, create the following simple C program:
main()
{
int x1, x2;
for (x1 = 0; x1 < x2; x1++) x2 = 2*x2;
}
and name it "test.c". Now compile the program by typing
mcc test.c
This will create a new assembly language file "test.s", which the compiled version of "test.c". Now examine "test.s" using an editor, e.g., "vi". Notice it is a mix of
Now save this program by renaming it "testP.s" (P for plain) by typing
mv test.s testP.s
The mcc compiler has an "-O" option which stands for "Optimization." The compiler will run slower but will reduce the size of the resulting assembly language program. Compile test.c using this option by typing
mcc -O test.c
Again this will create another assembly language program "test.s".