# Duke CPS 104 Codex

## Topics

These are various things that I have composed for Duke's architecture course, CPS 104, over the times I've been in and UTAed for the class. I have moved these to the Cornell server since I can no longer edit my old page at Duke. These were originally posts or emails to instruct people, but they have been modified to be more suitable to a more general audience, and been put into friendly HTML styled format for everyone's enjoyment. Please point out any errors I may have made.

Two's Complement
Two's complement is not a complicated scheme and is not well served by anything lengthly. After a brief description which explains what two's complement is and how to use it, there are mostly examples of conversions and arithmetic using two's complement.
Floating Point
This document explains the IEEE 754 floating-point standard. It explains the binary representation of these numbers, how to convert to decimal from floating point, how to convert from floating point to decimal, discusses special cases in floating point, and finally ends with some C code to further one's understanding of floating point. This document does not cover mathematical operations with floating point numbers.
Reduced Machine Instruction Tutorial
This document is intended to provide examples of simple programs written in the RMI that demonstrate basic programming in RMI, as well as outline what you can and cannot do when programming with RMI. RMI is created by Professor Wagner, and serves as an example of an instruction set with minimal syntax, but potentially unlimited functionality. RMI serves the basis for problem P3.
MIPS Examples
This document provides examples that are supposed to give greater insight into what MIPS does, and how to use MIPS for (more or less) useful applications. I cover how to read in strings in MIPS and what happens to memory when you read in strings. I also cover using arrays in MIPS. The reader should have a rudimentary understanding of the MIPS language.
Cache
This document explains in a great detail the more salient points of memory cache. It explains the three major types of cache (direct mapped, set associative, and fully associative), examples of the operations of cache, discusses design considerations, and so on.
Virtual Memory
This document explains in a fair amount of detail the paged virtual memory system in line with the discussions of the CPS 104 lectures and notes on the subject. I attempted to cover all aspects of paged virtual memory, but I do not feel comfortable saying that this is a work suitable to teach someone totally unfamiliar with virtual memory.
Setting AFS File Permissions
If you want to give anyone access to some files on ACPUB, read here.

## Archive

These files may be helpful.

Gzipped Fall 2000 Newsgroup Archive (200k)
This is a text file with all the `duke.cs.cps104` postings during the fall 2000 semester.
Gzipped Spring 2001 Newsgroup Archive (85k)
This is a text file with most of the `duke.cs.cps104` postings during the spring 2001 semester. I made a mistake while tagging the articles, so this archive has left out some very fine posts. I warn you, the students hated me then. The professor too. It was great!
Gzipped Fall 2001 Newsgroup Archive (172k)
This is a text file with all of the articles from the fall 2001 semester. For some reason the articles are wrapped very strangely. Well, there had to be something wrong with the archive.

Thomas Finley, 2000