2012 CS 301 - Assembly Language
|Meets MWF 3:30-4:30 PM
Room 106 Chapman Building
University of Alaska Fairbanks
3.0 Credits, Fall 2012
Prerequisite: CS 201 (Programming)
|Instructor: Dr. O. Lawlor|
Office: 201E Chapman
Office Hours: 11:30-1:00 TR (plus!)
- Final exam and course grades are on NetRun. It's been a fun semester!
- Your final draft of Project 2 is due
anytime the day of the final exam, Friday December 13. The exam itself
will be 3:15-5:15pm Friday in the usual classroom.
- Project 2 deadlines are posted;
coming up are rough draft code by Monday on Blackboard,
and in-class presentations Friday, December 7.
Also see my project 1 final comments on NetRun
- HW7 is posted on NetRun,
and due by Wednesday, November 21.
- HW6 was posted on NetRun,
and due by Monday, November 12.
- Project 1 in-class presentations, and final drafts are due Wednesday, October 31 on Blackboard. (You'll have to log in to Blackboard first.) Along with the code, please include a short README.txt explaining who you are, what you did, and what platform & compiler you used.
- Project 1 rough draft *brief* grading comments, and suggestions for the final version, are posted on NetRun.
- The midterm exam was Wednesday, October 17; grades are on NetRun!
- HW5 was posted on NetRun,
and due by Monday, October 15.
- HW4: beyond NetRun is due via BlackBoard by midnight Monday, October 8. (The turn-in link probably won't work until you log in to Blackboard first.)
- HW3 was posted on NetRun,
and due by Friday, September 28.
was posted on NetRun,
and due by Friday, September 21.
was posted on NetRun,
and due by Friday, September 14.
was posted on NetRun,
and due by Friday, September 7.
- Use your alaska.edu email address to get a NetRun account, then log in to NetRun, and HW0
should be listed at the bottom of the screen under CS 301 (Fall 2012). If you
don't get your password, or you can get it but don't see CS 301 or HW0
listed, please email me!
- Lecture Notes:
Computing with Atoms: Bio and Nano
Course Review for Final Exam
Computer Architecture of Web Browsers
Graphics Processing Unit (GPU) Programming in GLSL and CUDA
Programming Multicore with OpenMP
The ARM Instruction Set
The Future(?) of Quantum Computing
Differences in C++ and Assembly Language between x86 and PowerPC
Preprocessor Macros in C++ and NASM
Making Code Faster
Signals: Interrupts in Userspace
Building Machine Code at Runtime
Memory Map Manipulation
Three Generations of x86 Floating-Point Numbers: FPU, SSE, and AVX
Single Instruction, Multiple Data: SIMD in SSE
Floating Point in x86 Assembly
Bits in a Float, and Infinity, NaN, and denormal
Floating Point Numbers and Roundoff
Fixed-Point: Fractions via Integer Arithmetic
Course Review for the Midterm Exam
Multi-Precision Arithmetic & "adc" Instruction
Interrupts, System Calls, and Protected Mode
Mixing Assembly and C++ Code
Strings in Assembly
Call vs Jmp: The Stack Connection
Saving and Restoring Registers on "The Stack"
Pointers and Pointer Arithmetic
Calling Functions from Assembly
Negative Numbers, and Creative Misuse of Branch Instructions
Loops and Branches in Assembly
Function Calling, and Preserved Registers
Machine Code & Assembly Language
Bits and Hexadecimal
- Course syllabus
which includes dates to remember, the grading policy, and a course outline.
- Dr. Hartman's 2003 CS301 page has a good set of links to reference documentation.
- 64-bit x86_64: Cheat Sheet
and official ABI (function
call and register info on page 21).
We'll mostly be covering 64-bit x86 assembly in this course. The Intel Software
is a 4000-page mega document giving the details of every register and
every instruction for every mode of every x86 processor ever made by Intel.
- 32-bit x86: Cheat Sheet. For Linux, the System V ABI gives the calling convention on page 39.
- PowerPC: Cheat Sheet.
- Free C/C++ compilers:
- On Windows, Microsoft Visual C++ is the standard compiler.
Visual C++ "Express Edition" is
free for download
directly from Microsoft. There's a project VSyasm
that provides the yasm assembler (used on NetRun) inside Visual Studio
2010. Visual Studio and VSyasm are already installed in the chapman
- Code::blocks is a free,
downloadable Windows IDE based on gcc.
- For Mac OS X machines, Apple's Xcode is the
usual IDE. It's free from Apple. Internally, xcode calls gcc.
- For Linux or other UNIX machines, you should either already have gcc/g++ installed, or else it should be easy to
install from your distribution. In Ubuntu, "sudo apt-get install pentium-builder yasm".
O. Lawlor, email@example.com
Up to: Class Site, CS, UAF