Student Site
Computer Systems: A Programmer's Perspective (CS:APP)

Randal E. Bryant and David R. O'Hallaron

CS:APP Home Page

This page contains additional resources for students using the CS:APP text.

Textbook

C/Unix

GNU/Unix Tools

Pentium Documentation

  • Intel Architecture Software Developer's Manual:
    • Volume 1: Basic Architecture (pdf, ps2up.gz).
      Chapters 3--6 contain useful information. Note that much of this documention is irrelevant---we are only running in ``flat'' addressing mode, and GAS does not support conditional moves, MMX, or SSE instructions. The overall document is 369 pages long. You probably don't want to print it out.

    • Volume 2: Instruction Set Reference (pdf, ps2up.gz).
      Chapter 3 contains a detailed description of every instruction. Note that they list the operands in the reverse order from their ordering in GAS. This manual is 854 pages long. You definitely don't want to print it out.

    • Volume 3: System Programming (pdf, ps2up.gz).
      Contains lots of useful information on the interface between the hardware and the operating system, including cache and TLB specs, virtual memory, exceptions and interrupt handling, and processes.

Chapter 2: Representing and Manipulating Information

Chapter 3: Machine-Level Representation of Programs

Chapter 4: Processor Architecture

Chapter 5: Optimizing Program Performance

  • Text files to benchmark word frequency analysis program

Chapter 6: The Memory Hierarchy

  • Generate your own memory using the ECT memperf tool developed by Tom Stricker (the inventor of the memory mountain) and Christian Kurmann at ETH.
  • A less sophisticated program from the CS:APP book for generating the memory mountain (tar)

Chapter 10: Virtual Memory

  • P. Wilson, M. Johnstone, M. Neely, and D. Boles, Dynamic Storage Allocation: A Survey and Critical Review, International Workshop on Memory Management, Kinross, Scotland, Sept, 1995. (ps).
    Comprehensive reference on storage allocators.

Chapter 12: Network Programming

  • The Tiny Web server (tiny.tar).
    Expands with tar xvf tiny.tar into a directory called ./tiny that contains everything you need to test the Tiny web server, including sample HTML files, GIFS, CGI scripts, and the csapp.c and csapp.h files from Appendix B of the text. Compiled and tested on Linux boxes.
  • The authoritative list of MIME types.

Randy Bryant and Dave O'Hallaron

Last modified: Sat Dec 8 00:36:28 EST 2007