Due Date: 9/15 (wed.)
Textbook Problem 3.1 (2 pt)
Textbook Problem 3.9 (1 pt)
Problem A (1 pt). [Do this problem after we cover PC relative addressing which is in the MPSb notes 23-25.] 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;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.
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:
Problem B. (1 pt.)
Consider the following C function:
increasing(int i, int j, int k) /* returns 1 if i < j < k */Write a MIPS assembly language implementation of this function assuming
{ if (i < j && j < k) return 1;
else return 0;
}
Problem C (3 pts total). The mcc compiler.
The MIPS processor has a compiler named "mcc". Here's an assignment which uses the output from the compiler. The following is a short C program called "test.c"
main()
{
int x1, x2;
for (x1 = 0; x1 < x2; x1++) x2 = 2*x2;
}
To compile, the command would be
mcc test.c
This will create a new assembly language file "test.s", which is
the compiled version of "test.c". You can download the
files, which are text files, here: test.c
and test.s
The assignment is to examine "test.s" using an editor (e.g., in windows you can use wordpad or notepad and in unix you can use pico or vi).