CSCI 223 - Computer Organization and Assembly Language



Dr. Tobin Maginnis (ptm@pix.cs.olemiss.edu)

Summer 2014 - Second Term 2014

Date(s)

Day(s)

Event(s)

July 24-25 Thurs-Fri Final examinations - Friday, July 25, 8:00 a.m.

Course Syllabus
Class Schedule
Daily Grades
Test Taking Procedure
Pre-course Videos
All About Circuits
Who Writes Linux?
Memory Hierarchy Latency
The memristor
Wikipedia Memristor
Example C Programs
Linux Kernel 64-Bit Memory Map
Powers of two
Byte Ordering in Memory
Hex to Decimal Converter
Row-Major Order

Unix Introduction
Code Examples from Text

eHandouts
Instruction Parts
Instruction Parts V2
Instruction Decode
Instruction Decode Description
IA-32 Instruction Decode example
ModR/M Byte Decode
S-I-B Byte Decode
IA-32 First Byte Decode
IA-32 Flags (PSW) Register
Memory hierarchy
Vi Command Reference (html)
Vim Command Reference (html)
Another Vi Command Reference (pdf)
VIM Command Reference (pdf)
Intel Core i7 Processors: Nehalem and X58 Have Arrived

Homework and Program Assignments

Example Programs
Display command line args in C
Display command line args in assembly
Add and printf two binary numbers in C
Add and printf two binary numbers in assembly
Add any number multi-digit numbers from the command line with the specified radix -->

Objectives
Unit One Objectives

Unit Two Objectives

Unit Three Objectives

Unit Four Objectives

Unix Help Pages
http://www.saintmarys.edu/~psmith/candunix.html
http://wwwlinuxdoc.org
http://www.emerson.emory.edu/services/unixhelp1.3/Pages
http://www.ee.surrey.ac.uk/Teaching/Unix


Assembly Help Pages
Executable and Linkable Format
Executable and Linkable Format Manual
Software optimization resources
Intel Architecture Software Developer's Manual - Volume 1: Basic Architecture (pdf)
Chapters 3 to 6 show the register transfers for each instruction; howevever the most of segmentation documention is irrelevant since the text assumes flat paging addressing. Also, GNU "as" does not support all IA instructions including: conditional moves, the MMX, or SSE instructions. The overall document is 369 pages long. You probably don't want to print it out.
Intel Architecture Software Developer's Manual - Volume 2: Instruction Set Reference (pdf)
Chapter 3 contains a description of the register transfers that make up instructions. Note that they list the operands in the old IBM right-to-left style rather in the DEC/ATT left-to-right style of GNU "as." This manual is 854 pages long. You definitely don't want to print it out.
Intel Architecture Software Developer's Manual - Volume 3: System Programming (pdf)
Describes the interface between the hardware and the operating system, including cache and TLB specs, virtual memory, exceptions and interrupt handling, and processes.
2004 IA-32 Intel Architecture Software Developer's Manual Volume 1: Basic Architecture in PDF
2004 IA-32 Intel Architecture Software Developer's Manual Volume 2A: Instruction Set Reference A-M in PDF
2004 IA-32 Intel Architecture Software Developer's Manual Volume 2B: Instruction Set Reference N-Z in PDF
2004 IA-32 Intel Architecture Software Developer's Manual Volume 3: System Programming Guide in PDF
Intel Architecture Software Developer's Manual Volume 1: Basic Architecture in PDF
Intel Architecture Software Developer's Manual Volume 2: Instruction Set Reference in PDF
Intel Architecture Software Developer's Manual Volume 3: System Programming Guide  in PDF
GNU as80386 Dependent Features
Assembly tutorial - http://www.strangecreations.com/library/assembly/
Assembly tutorial - http://www.faqs.org/faqs/assembly-language/x86/general/
Assembly tutorial - http://cs.smith.edu/~thiebaut/ArtOfAssembly/artofasm.html


GNU Help Pages
GNU gcc/as x64 register assignments
GNU gcc/as x64 conventions
Enter and Leave Instructions
Stack Frames
GNU as x64 directives
The GNU gcc and "as" manuals - http://www.gnu.org/manual/
The GNU assembler (gas) documentation in HTML
The GNU source-level debugger (gdb) documentation in HTML
The GNU gcc compiler front-end documentation in HTML
GNU Compiler Collection Wiki
GNU Compiler Collection (GCC)
http://www.linuxdoc.org/HOWTO/Assembly-HOWTO.html
http://www.math.utah.edu/docs/info/ld_2.html
http://www.intel.com/design/pentium/manuals/