teaching machines

CS 352 Lecture 17 – Catchup

October 17, 2016 by . Filed under cs352, fall 2016, lectures.

Dear students,

Last week lots of good misunderstandings of memory came up. When misunderstandings appear, the right things are happening. Conflict surfaces in your brain, which is step 1 of learning. Step 2 is resolving that conflict. Today, then, I want to start by revisiting some ideas of how memory and pointers work in C and really in the entire computer.

I will unveil the following programming one line at a time. Your job is to determine what’s happening.

 0: int a[] = {65535, 991, 992, 993};
 1: printf("%d\n", a);
 2: printf("%d\n", *a);
 3: printf("%d\n", &a[1]);
 4: printf("%d\n", a + 3);
 5: printf("%d\n", 2[a]);
 6: int *p = a;
 7: printf("%d\n", p);
 8: printf("%d\n", &p);
 9: printf("%d\n", *p);
10: unsigned char *b = (unsigned char *) a;
11: printf("%d\n", *b);
12: printf("%d\n", *(b + 1));
13: printf("%d\n", *(b + 2));
14: printf("%d\n", *(b + 3));

Some folks have expressed confusion about HDL and n-way components. Also, the next homework requires doing some HDL tricks that I don’t think are necessarily intuitive. Rather than continuing to build on a wobbly foundation, let’s sketch out schematics for some of these components and translate them to HDL. We’ll visit these: Mux4Way, DMux4Way, Inc16, LeastByte (which is not part of any homework), ALU, Bit, Register, RAM8, RAM64, and PC.

See you next class!

Sincerely,