OS Textbooks
C Programming
Linux Kernel Internals
Virtual Machines
x86 Assembly Language Programming
(Thanks to Eddie Kohler and MIT's 6.828 course for some of the mmaterial below.)
- PC Assembly Language. Paul A. Carter, November 2003.
A good description of x86 assembly language and assembly language in general, including some stuff you
ideally know already. You might prefer to read this online, rather than print it out; it's a quick read.
Warning: This book uses "Intel" assembly syntax, in which instructions are written as 'instr dst, src'.
GCC uses "AT&T" assembly syntax, in which they are written as 'instr src, dst'.
- Brennan's Guide to Inline Assembly. Brennan "Bas" Underwood.
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.
- IntelĀ® 64 and IA-32 Architectures Software Developer Manuals.
Reference manual for Intel processors. Available in multiple forms (3 individual volumes or a combined book).
Volume 1 describes the basic architectures. Volume 2 contains the instruction sets. Volume 3 is a system programming guide.
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)
- inc/timerreg.h
- 8259/8259A Programmable Interrupt Controller (PIC)
- kern/picirq.*
- Real-Time Clock (RTC)
- kern/kclock.*
- 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 JOS,
but you're welcome to do it as a challenge problem!)
- E100 Network Interface Card