Friday, October 16, 2009

Operating System Engineering - Assembly Language - MIT Materials

Assembly Language programming links to several free materials available at Operating System Engineering course.

References page has reference to all the following materials:

Selection of Operating System Papers
Available on the 6.828 schedule.

* The UNIX Time-Sharing System, Dennis M. Ritchie and Ken L.Thompson,. Bell System Technical Journal 57, number 6, part 2 (July-August 1978) pages 1905-1930. (local copy) You read this paper in 6.033.

* The Evolution of the Unix Time-sharing System, Dennis M. Ritchie, 1979.

* The C programming language (second edition) by Kernighan and Ritchie. Prentice Hall, Inc., 1988. ISBN 0-13-110362-8, 1998.

x86 Emulation

* QEMU - A fast and popular x86 platform and CPU emulator.

o User manual

* Bochs - A more mature, but quirkier and much slower x86 emulator. Bochs is generally a more faithful emulator of real hardware than QMEU.

o User manual

o Debugger reference

x86 Assembly Language

* PC Assembly Language, Paul A. Carter, November 2003. (local copy)

* Intel 80386 Programmer's Reference Manual, 1987 (HTML). (local copy - PDF) (local copy - HTML)

Much shorter than the full current Intel Architecture manuals below, but describes all processor features used in 6.828.

* IA-32 Intel Architecture Software Developer's Manuals, Intel, 2007. Local copies:

o Volume I: Basic Architecture

o Volume 2A: Instruction Set Reference, A-M

o Volume 2B: Instruction Set Reference, N-Z

o Volume 3A: System Programming Guide, Part 1

o Volume 3B: System Programming Guide, Part 2

* Multiprocessor references:

o MP specification


* AMD64 Architecture Programmer's Manual.

Covers both the "classic" 32-bit x86 architecture and the new 64-bit extensions supported by the latest AMD and Intel processors.

* Writing inline assembly language with GCC:

o Brennan's Guide to Inline Assembly, Brennan "Mr. Wacko" Underwood

o Inline assembly for x86 in Linux, Bharata B. Rao, IBM

o GCC-Inline-Assembly-HOWTO, Sandeep.S

* Loading x86 executables in the ELF format:

o Tool Interface Standard (TIS) Executable and Linking Format (ELF).
The definitive standard for the ELF format.

PC Hardware Programming

* General PC architecture information

o Phil Storrs PC Hardware book, Phil Storrs, December 1998.

o Bochs technical hardware specifications directory.

* General BIOS and PC bootstrap

o BIOS Services and Software Interrupts, Roger Morgan, 1997.

o "El Torito" Bootable CD-ROM Format Specification, Phoenix/IBM, January 1995.

* VGA display - kern/console.c

o VESA BIOS Extension (VBE) 3.0, Video Electronics Standards Association, September 1998. (local copy)

o VGADOC, Finn Th√łgersen, 2000. (local copy - text) (local copy - ZIP)

o Free VGA Project, J.D. Neal, 1998.

* Keyboard and Mouse - kern/console.c

o Adam Chapweske's resources.

* 8253/8254 Programmable Interval Timer (PIT) - inc/timerreg.h

o 82C54 CHMOS Programmable Interval Timer, Intel, October 1994. (local copy)

o Data Solutions 8253/8254 Tutorial, Data Solutions.

* 8259/8259A Programmable Interrupt Controller (PIC) - kern/picirq.*

o 8259A Programmable Interrupt Controller, Intel, December 1988.

* Real-Time Clock (RTC) - kern/kclock.*

o Phil Storrs PC Hardware book, Phil Storrs, December 1998. In particular:

+ Understanding the CMOS

+ A list of what is in the CMOS

o CMOS Memory Map, Padgett Peterson, May 1996.

o M48T86 PC Real-Time Clock, ST Microelectronics, April 2004. (local copy)

* 16550 UART Serial Port - kern/console.c

o PC16550D Universal Asynchronous Receiver/Transmitter with FIFOs, National Semiconductor, 1995.

o Technical Data on 16550, Byterunner Technologies.

o Interfacing the Serial / RS232 Port, Craig Peacock, August 2001.

* IEEE 1284 Parallel Port - kern/console.c

o Parallel Port Central, Jan Axelson.

o Parallel Port Background, Warp Nine Engineering.

o IEEE 1284 - Updating the PC Parallel Port, National Instruments.

o Interfacing the Standard Parallel Port, Craig Peacock, August 2001.

* IDE hard drive controller - fs/ide.c

o AT Attachment with Packet Interface - 6 (working draft), ANSI, December 2001.

o Programming Interface for Bus Master IDE Controller, Brad Hosler, Intel, May 1994.

o The Guide to ATA/ATAPI documentation, Constantine Sapuntzakis, January 2002.

* Sound cards (not supported in 6.828 kernel, but you're welcome to do it as a challenge problem!)

o Sound Blaster Series Hardware Programming Guide, Creative Technology, 1996.

o 8237A High Performance Programmable DMA Controller, Intel, September 1993.

o Sound Blaster 16 Programming Document, Ethan Brodsky, June 1997.

o Sound Programming, Inverse Reality.

* E100 Network Interface Card

o Intel 8255x 10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual

o 82559ER Fast Ethernet PCI Controller Datasheet

o The 82559 EEPROM

Really Good Stuff.

- EF

1 comment:

ginseng said...

Assemble language is the basic language of the computer. Assembly Language programming links to several free materials available at Operating System Engineering course.