CS 213 Documents, Fall '01
Intel IA32 and Pentium III documentation
For this course, we will be using the Gnu GCC compiler to generate
code targeted to machines running Intel IA32 (popularly known as
``x86'') programs under Linux. GCC uses an assembler format known as
``GAS'' (for Gnu ASsembler). The documentation on this particular
combination of machine and assembler format is a bit spotty. Here are
some useful resources:
- Some information extracted from the GCC info pages about GAS
format for IA32 (known in the GCC world as ``i386'') in text format. This documentation is
helpful if you are either familiar with the Intel/Microsoft assembly
format, or if you do much reading of the Intel manuals.
- Intel Architecture Software Developer's Manual
- Volume 1: Basic Architecture
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
- Volume 2: Instruction Set Reference
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
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.
- Microprocessor Report article on the Intel P6
microprocessor. This later became known as the PentiumPro, and was
the basis for the Pentium II, Pentium III, and Celeron processors.
Additional information on buffer overflow bugs (Class 09)
Supplementary Info on Dynamic Memory Allocation (Classes 21 and 22)
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.
Last modified: Mon Oct 15 11:47:52 EDT 2001