CSE 30 -- Lecture 9 -- Oct 29


Midterm results were disappointing. Make sure you learn this stuff. The final will be worse. Trust me.

I went over DeMorgan's Laws, and the compilation of condition branches or loop control boolean expressions.

I also went over the compilation of

for (i = 0; i < N; i++) {
	sq[i] = i*i;
}
into MIPS assembly, and looked at the exact run-time of this code as an expression involving the inputs. Assume that i is in register $t0, N is in $a0, and the base address of the array sq is in $a1.
		instructions		cycles
		li $t0, 0		1
		b test			1
bod:		mul $t0,$t0		~7
		mflo $t1		1
		sll $t2,$t0,2		1
		add $t2,$t2,$a1		1
		sw $t1,0($t2)		1 (if write buffer) + ??
test:		blt $t0,$a0,bod		1 (ignoring pipeline issues for now)
The runtime is 3 + (12 + ??) N . The runtimes for mul and sw depends on the particular implementation of the architecture. Some chips have faster multiply units than others (more expensive / chip real estate used); some chips have a better write queue for the sw (it could even be a single cycle).

We started next on

for (isq = i = 0; i < N; i++) {
	sq[i] = isq;
	isq = isq + 2 * i + 1;
}
See if you can translate this to MIPS efficiently. What is the runtime of this new code?

For your amusement:

[ieng9]~ 397
$ cat foo.java
class foo {
 public static void main(String argv[]) {
  System.out.println("Hello world");
 }
}
[ieng9]~ 398
$ /usr/local/java/jdk_1.1.3/bin/javac foo.java 
[ieng9]~ 399
$ /usr/local/java/jdk_1.1.3/bin/java foo
Hello world
[ieng9]~ 400
$ od -x foo.class | head -1
0000000 cafe babe 0003 002d 0020 0800 1307 0018
[ieng9]~ 401
$ 

[ search CSE | CSE home | bsy's home page | webster i/f | yahoo | hotbot | lycos | altavista ]
picture of bsy

bsy+www@cs.ucsd.edu, last updated Mon Nov 30 21:53:28 PST 1998.

email bsy & tutors


Don't make me hand over my privacy keys!