CMSI 284
Computer System Organization/Systems Programming
Spring 2010
- Note
- This page is maintained as an archival record of the course shown above, and as such, some links on this page may no longer be valid nor accessible. They are kept here as a record of the resources that were available at the time of the course offering.
All materials are in PDF. Contact me directly for source code or solutions.
- Announcements
- 20100323: As decided in the March 23 class, Assignments 0325 and 0415 are now due on the same day, April 15. Extra credit work remains due on March 25, and it is still recommended that you finish Assignment 0325 ASAP so that you have more time for Assignment 0415.
- Syllabus
- For those of you who are using
gedit
for your assembly language work, Richard Brous has very kindly adapted agedit
language file that he found on the web so that it color-codes your NASM 64-bit assembly code nicely. Download it from here, and copy it to~/.local/share/gtksourceview-2.0/language-specs
(create any missing directories/folders if needed).
Assignments
Course Materials
Most of these links lead to Prof. Ray Toal’s original CMSI 284 course materials.
- 0119: What is Systems Programming?
- 0121: Computer Systems Organization
- 0126: Information and Computation
- 0128: Numeric Encoding, Using LaTeX
- 0204: Character Encoding, Using Your CVS Repository
- 0209: Digital Logic, Introduction to C
- 0223: Midterm Review Sheet
- 0311: Processors, IA-32 Architectural Overview, Assembly and Disassembly
- 0316: Assembly language programming
- 0318: 64-bit NASM Notes
- 0406: Scalar SSE Notes
- 0413: Linux System Calls
- 0420: IA-32 Instruction Encoding
- 0422: Term Portfolio Specifications
- 0427: IA-32 Instruction Decoding
- 0429: Final Review Sheet
Related External Links
These links take you to web sites beyond this server. The sites are in no particular order or bias, just “as they came to mind.”
- Prof. Ray Toal’s CMSI 284 course page
- Software Carpentry: A very handy collection of practical “tech nuggets”
- CVS resources
- The CVS home page
- A CVS tutorial
- An online book on CVS
- A CVS quick reference card (90K PDF) — written using LaTeX, no less!
- LaTeX resources
- The LaTeX home page
- The Not So Short Introduction to LaTeX 2e (2.2M PDF)
- LaTeX 2e Cheat Sheet (106K PDF)
- Annotated LaTeX Guide
- The MikTeX home page: a popular LaTeX implementation
- Wikipedia: A
good starting point for virtually any concept lookup
- Wikipedia page for system programming
- Wikipedia page for system software
- Wikipedia page for CVS
- Encoding resources
- Steve Hollasch’s extensive summary of IEEE 754
- The IANA Character Sets page
- More UTF information from czyborra.com
- C language resources
- C99 language specification (3.3M PDF)
- Dave Tribble’s C language differences page
- A useful C language portal
- A computer science classic: the original C Programming Language book, by Kernighan & Ritchie
- C library references: a C90 one-pager from the University of Tasmania, a more detailed C90 reference by Eric Huss; for C99, go back to the official spec (3.3M PDF)
- Assembly language resources
- The Netwide Assembler (NASM) home page
- Software
Developer’s Manuals for Intel 64 and IA-32 Architectures: the
authority for all things related to Intel CPUs
- Volume 1: Basic Architecture (3.21M PDF)
- Volume 2A: Instruction Set Reference, A-M (2.91M PDF)
- Volume 2B: Instruction Set References, N-Z (3.12M PDF)
- 64-bit application binary interface (ABI) and calling convention documents
- The ARM Infocenter for all things ARM (the CPU behind many mobile and embedded systems)
- An article with sample code on Using the raw keyboard mode under Linux, by Karsten Scheibler of the Linux Assembly project
- Wikipedia page for the Executable and Linkable Format (ELF)
- The ELF-64 object file specification
- A link to the “classic” article on Smashing the Stack for Fun and Profit by Aleph One