Due Date: 9/26/02 (friday)
Assignment:
Textbook Problem 3.2 (1 pt)
Textbook Problem 3.6 (2 pts)
Textbook Problem 3.16 (1 pt)
Problem A. Consider the following functions that are part of a
C program:
// Returns 1 if m = n, and returns 0 otherwise
int compare(int m, int n)
{
if (m == n) return 1;
else return 0;
}
// Returns 1
if b[0] = b[10] and returns 0 otherwise
int compArray(int b[])
{
return compare(b[0],b[10]);
}
(a) (1 pt) Write a MIPS assembly language implementation
of compare
assuming the values of m and n are passed through $a0 and $a1, respectively. In addition,
the returned value is passed through $2. You may use register
$t0 for temporary storage (if you need it). Your implementation should
take five instructions or less.
(b) (1pt)Write a MIPS assembly language implementation of function
compArray, which calls function compare. Assuming its input parameter
is passed through $a0. In particular, the address to b[ ] is passed through $a0 (i.e., $a0 has the address to b[0]). In addition, the
returned value is passed through $2. You may use registers
$t0 and $t1 for temporary storage (if
you need them) but no other registers. You may use the stack for temporary
storage, and so you may change the value of $sp. (You do not need to
use the frame pointer.) Note that compArray calls compare, so your
implementation should be consistent with your answer in part (a). Your
implementation should take 14 instructions or less.
Problem B. Write the 6-bit signed-magnitude, ones complement,
and twos complement representations of the following values. (Clearly
label which representations you are using.)
(a) (1 pt) - 17
(b) (1 pt) + 12
(c) (1 pt) - 13
Problem C. Consider the following additions of 4-bit twos-complement numbers. Which of the additions result in overflow.
(a) (1 pt)
1110
+0100
(b) (1 pt)
0110
+0010
(c) (1 pt)
1100
+1000