Difference between revisions of "CSC231 Class Page 2015"
(→ ) |
(→ ) |
||
Line 237: | Line 237: | ||
| | | | ||
* '''Monday''': | * '''Monday''': | ||
+ | [[Image:File:Pentium.gif|right|150px]] | ||
:* Arithmetic instructions: '''ADD''', '''SUB''', '''INC''', '''DEC'''. Skip '''MUL''' and '''DIV''' for right now. | :* Arithmetic instructions: '''ADD''', '''SUB''', '''INC''', '''DEC'''. Skip '''MUL''' and '''DIV''' for right now. | ||
:* A quick introduction to calling functions: '''call''' and '''ret''' | :* A quick introduction to calling functions: '''call''' and '''ret''' |
Revision as of 07:46, 5 October 2015
--D. Thiebaut (talk) 11:28, 26 August 2015 (EDT)
Week 1 Sept 7 |
Topics: Introduction, Python, Idle, Piazza, Moodle submission Lab/Hw Reading - Wednesday
- Syllabus
- Class accounts
- The main players for this semester:
- PC
- Processor
- Memory
- Disk
- First program in assembly: recognize the different elements:
- Structure
- Presentation
- Documentation
- Skeleton program
- Hello World! on Linux (and its Mac version)
- Reading
- Chapter 1 in the Art of Assembly.
- Also Chapter 3, Sections 0 to 3.1.2.
- Sections 1.3.1, 1.3.2, 1.3.3, 1.3.4, and 1.3.5 in Carter's PC Assembly Language. Note, Carter uses 1A92h to represent a hexadecimal number. I prefer 0x1A92.
- Wednesday
Week 2 Sept. 14 |
Topics: Processor and Memory, working with the shell, and emacs. Lab/Hw Reading - Monday:
- Review PC destruction lab. Main players: Processor, cores, RAM, motherboard, crystal
- How would Richard Tuttle see a computer motherboard? This is some of his artwork.
- First diagram of a computer as seen by an assembly language programmer
- Review Hello World program with this new knowledge
Notice how the main character uses all kinds of software packages to solve his problem. It includes working in a shell, using shell commands, and mixing the results with various programming techniques.
- Wednesday
- Linux System Calls. See Slide 5 of this presentation
- Working in a shell
- The bash shell
- Playing with the shell using 231a-xx accounts
- Useful commands
- ls, cd, pwd, mkdir, rm, rmdir, cp
- history, !, !!, alias, w, ps, who am i
- grep, wc, head, tail
- Redirection
- Pipes
- Emacs
- quick overview (see this page)
- set of commands
- Lab
- Homework
Week 3 Sept. 21 |
Topics: Number Systems, the MOV instruction Lab/Hw Reading - Monday:
- Let's talk about the crystal
- Relationship with instructions
- Power-law for increase in processor speed
- Ray Kurzweil on Power Laws (go to marker 3:30 min in video)
- Playing a game of numbers
- Hexadecimal system:
for i in range( 256 ): print( i, format( i, '02X' ) )
- Assembly:
- Review nasm, ld
- Understanding how data fits in memory: printing strings defined by db
- Size of a program: data + code
size helloWorld2 text data bss dec hex filename 34 14 0 48 30 helloWorld2
- Listing of the assembly and its code:
nasm -f elf -l helloWorld2.lst helloWorld2.asm ls ... helloWorld2.lst ...
- Wednesday
- Quick check of number conversion skills
- Observe output of nasm -l (helloWorld2.lst)
- Another way to look at the executable file with hexdump
hexdump -v -C helloWorld2 00000000 7f 45 4c 46 01 01 01 00 ... ... 000002b0 74 61 00 5f 65 6e 64 00 |ta._end.| 000002b8
- Observe the output of hexdump command
- Finish the reading assigned for Week 1.
- The mov instruction
Week 4 Sept. 28 |
Topics: The Mov instruction. Arithmetic instructions. Addressing Modes. Lab/Hw Reading - Monday:
- Wednesday
- A script to automatically assemble and link assembly programs
- Review: MOV instruction: direct and immediate modes of addressing data
- Examples: copying a string to another string
- Exercises with the MOV instruction
- The ADD instruction
- Overly-simplified encryption of a string
- What does compiled code look like?
- Chapter 3, Section 1 in The Art of Assembly, to Section 3.2.2.
Week 5 Oct 5 |
Topics: Lab/Hw Reading - Monday:
- Arithmetic instructions: ADD, SUB, INC, DEC. Skip MUL and DIV for right now.
- A quick introduction to calling functions: call and ret
- Printing decimal numbers in assembly
- A first look at what is behind code like this:
int a; int b; int c; a = 3; b = 5; c = a + b;
- "Compile" the following statements to assembly:
int a; int b; int c; int d; a = 3; b = 5; c = a*2 + b; d = (a + b + 10 + 2*c ) * 2 - 20;
- Example of what the GNU cc compiler would have generated
- Exercise: translate the following code in assembly. If you need to refresh your memory on Java types, check this document out:
int a = 3, b = 5, c; short d = 10, e = 0xff, f = 0; c = ( a * 2 + b ) * 3; f = d + (e-1); c = a * 2* d;
- Wednesday
- Mountain Day?
- Homework
- Big Endian vs. Little Endian hardware. Why do we care?
Week 6 Oct. 12 |
Topics: Lab/Hw Reading - Monday: Fall Break
- Wednesday
- Lab
- Homework
Week 7 Oct 19 |
Topics: Lab/Hw Reading - Monday:
- Wednesday
- Lab
- Homework
Week 8 Oct. 26 |
Topics: Lab/Hw Reading - Monday:
- Wednesday
- Lab
- Homework
Week 9 Nov. 2 |
Topics: Lab/Hw Reading - Monday:
- Wednesday
- Lab
- Homework
Week 10 Nov 9 |
Topics: Lab/Hw Reading - Monday:
- Wednesday
- Lab
- Homework
Week 11 Nov 16 |
Topics: Lab/Hw Reading - Monday:
- Wednesday
- Lab
- Homework
Week 12 Nov 23 |
Topics: Lab/Hw Reading - Monday:
- Wednesday: Thankgiving Break
- Lab
- Homework
Week 13 Nov 30 |
Topics: Lab/Hw Reading - Monday:
- Wednesday
- Lab
- Homework
Week 14 Dec 7 |
Topics: Lab/Hw Reading - Monday:
- Wednesday
- Lab
- Homework
Week 15 Dec 14 |
Topics: Lab/Hw Reading - Monday: Last Class
- Final Exam
Links and Resources
- Notes on Assembling 32-bit Code on 64-bit Machines
- Hello Word in assembly running on Mac OS and on Linux