x86 Assembly Language Programming
- PC Assembly
Language, Paul A. Carter, July 2006. 195pp. (local PDF copy)
A clear description of x86 assembly language and assembly
language in general, including some stuff you hopefully know already.
You might prefer to read this on line, rather than print it out; it's a
quick read. Warning: This book uses "Intel" assembly syntax, in
which instructions are written "
instr dst, src"; we will use
"AT&T" assembly syntax, in which they are written "
dst". You don't need to read the following sections, which will
not be needed for class: 1.3.6-1.3.7, 1.4, 1.5, 5, 6, and 7.2.
Guide to Inline Assembly, Brennan "Bas" Underwood. (local copy)
A short and sweet description of how to use inline assembly
instructions with GCC. Includes a description of the "AT&T" assembly
syntax used by GCC.
- Reference Manuals
- Tool Interface Standard (TIS) Executable and
Linking Format (ELF) Specification, Version
Our kernel runs ELF executables; this is the definitive
standard for how these executables are constructed.
- GNU ld Command Language (for linker scripts)
- The STABS Debugging Format (for the debugging symbols used by our kernel)
- QEMU -
A fast PC emulator.
- Bochs - An slower x86 platform
and CPU emulator, with better integrated debugging support.
PC Hardware Programming
- General PC architecture information
- General BIOS and PC bootstrap
- VGA display - kern/console.c
- Keyboard and Mouse - kern/console.c
- 8253/8254 Programmable Interval Timer (PIT)
- 8259/8259A Programmable Interrupt Controller (PIC)
- Real-Time Clock (RTC)
- 16550 UART Serial Port - kern/console.c
- IEEE 1284 Parallel Port - kern/console.c
- IDE hard drive controller - fs/ide.c
- Sound cards
(not supported in 6.828 kernel,
but you're welcome to do it as a challenge problem!)
Back to CS 235 Advanced Operating Systems, Fall 2010