Difference between revisions of "CSC231 Schedule 2010"

From dftwiki3
Jump to: navigation, search
 
(178 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[CSC231 | Back to Main Page]]
+
--[[User:Thiebaut|D. Thiebaut]] 08:28, 6 January 2011 (EST)
 +
----
 +
 
 +
<br />
 +
<center>
 +
[[CSC231 | Back to Main Page]] | [http://cs.smith.edu/classwiki/index.php/CSC231_Page_(2010)  Class Wiki]
 +
</center>
 +
 
 
----
 
----
 
__TOC__
 
__TOC__
Line 11: Line 18:
 
|width="15%"| Week 1 <br /> 9/08  
 
|width="15%"| Week 1 <br /> 9/08  
 
|width="60%"|
 
|width="60%"|
*
+
;Wed 9/8
 +
* Introduction
 +
* Syllabus
 +
* The PC
 +
** What's inside?
 +
** The main players
 +
* [[CSC231 FirstProg.asm | First program]] in assembly
 +
** structure
 +
** presentation
 +
** documentation
 +
;Fri 9/10
 +
* [[CSC231_skeleton_program | Skeleton program]]
 +
* "Hello world!" in assembly: [[CSC231 Hello World! | program]]
 +
* Introduction to wikimedia
 +
** [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheat-Sheet]
 +
**  [http://www.mediawiki.org/wiki/Help:Formatting Formatting text]
 +
** [http://www.mediawiki.org/wiki/Help:Images Inserting images]
 +
** [http://www.mediawiki.org/wiki/Links Creating links]
 +
* [[CSC231 Hello World on Mac | Hello world!]] for the Mac
 
----
 
----
 +
* [[CSC231 PC-demolition Lab | PC Demolition Lab]] <--- report due next Friday, 9/17/10
 +
 +
|
 +
* Chapter 1 in the [http://cs.smith.edu/~thiebaut/ArtOfAssembly/artofasm.html 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 [http://cs.smith.edu/~thiebaut/classes/231_0405/doc/pcasm-book.pdf PC Assembly Language].
  
*
 
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
 
| Week 2 <br /> 9/13  
 
| Week 2 <br /> 9/13  
 
||  
 
||  
*
+
; '''Monday 9/13'''
 +
* Mini Lab
 +
* Assembling with the -l option to generate a listing
 +
 +
      nasm -f elf -F stabs -l helloworld.S helloworld.asm
 +
 +
* The memory contains numbers only
 +
* [http://en.wikipedia.org/wiki/Introduction_to_Boolean_algebra Boolean Algebra]
 +
* Binary system
 +
* logic expressions
 +
; '''Wednesday 9/15'''
 +
* Digital Electronics Lab in FH143
 +
; '''Friday 9/17'''
 +
* Digital Electronics Lab in FH143
 
----
 
----
 
+
* [[CSC231 Lab 1 | Mini Lab #1]]
*
+
* [[CSC231 Lab 2 (Digital Electronics) | Lab #2 ]] (Wednesday)
 +
* [[CSC231 Lab 3 (Digital Electronics) | Lab #3 ]] (Friday)
 +
* [[CSC231 Homework 1 2010 | Homework #1 ]] and [[CSC231 Homework 1 Solutions 2010 | Solution Programs]]
 
||  
 
||  
 
*
 
*
Line 27: Line 72:
 
| Week 3 <br /> 9/20  
 
| Week 3 <br /> 9/20  
 
||
 
||
*
+
[[Image:Pentium.gif|right|100px]]
 +
[[Image:MultiCore.jpg|right|100px]]
 +
;Monday 9/20
 +
* Three-bit adder. Review
 +
* A word on Verilog and FPGAs [http://www.asic-world.com/verilog/gate1.html#Examples Examples]
 +
* Architecture of the Pentium (simplified)
 +
;Wednesday 9/22
 +
* [[CSC231 ReverseEngineering.lst | Reverse engineering a listing]], and [[CSC231 ReverseEngineeringSol.asm|solution]].
 +
* [http://www.asciitable.com/ ASCII Table]
 +
;Friday 9/24
 +
* Comments on lab reports
 +
* Once again: ''Everything in memory is a number!''
 +
* Review the [[CSC231 ReverseEngineering.lst | reverse engineering]] example
 +
* [[CSC231 Exercises Binary Hexadecimal | Exercises on Binary/Hexadecimal]] (do on your own!)
 +
* The '''mov''' instruction (covered [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH04/CH04-3.html#HEADING3-79 here]).
 +
** Introduction to the 32-bit registers: EAX, EBX, ECX, EDX
 +
** Introduction to the 16-bit registers: AX, BX, CX, DX
 +
** Introduction to the 8-bit registers: AL, AH, BL, BH, CL, CH, DL, DH
 +
 
 
----
 
----
  
*
+
* [[CSC231 Homework 2 2010 | Homework #2 ]] and [[CSC231 Homwork 2 Solution 2010| solution]]
 
||  
 
||  
*
+
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH03/CH03-1.html Basic Computer Organization],  Sections 3.0, 3.1, 3.3.1
 
+
* [http://webster.cs.ucr.edu/AoA/Linux/HTML/DataRepresentation.html#998846 Review Data Representation]
 +
* [http://webster.cs.ucr.edu/AoA/Linux/HTML/DataRepresentation2.html#998917 Bits, Nibbles, Bytes]
 +
* [http://webster.cs.ucr.edu/AoA/Linux/HTML/DataRepresentation3.html#1012324 The Hexadecimal System]
 +
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH04/CH04-3.html#HEADING3-79 The MOV instruction]
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
 
| Week 4 <br /> 9/27  
 
| Week 4 <br /> 9/27  
 
||
 
||
*
+
[[Image:FibonacciPigeons.jpg|200px|right]]
 +
; Monday 9/27
 +
* The MOV Instruction
 +
*[[CSC231 Exercises with Mov, Arithmetic and Logic Instructions| Exercises with the MOV instruction]]
 +
; Wednesday 9/29
 +
* <font color="green">MOUNTAIN DAY!</font>
 +
; Friday 10/1
 +
* Arithmetic instructions: '''ADD''', '''SUB''', '''INC''', '''DEC'''
 +
* Logic instructions: '''AND''', '''OR''', '''NOT''', '''XOR'''
 +
* using DDD to debug programs
 +
* <font color="magenta">'''Lab 4''', Part 1</font>
 +
 
 
----
 
----
*
+
*[[CSC231 Lab 4: Debugger | Lab 4]]: Using the debugger
 +
*[[CSC231 Homework 3 2010 | Homework #3]] and [[CSC231 Homework 3 Solutions 2010 | Solution]]
 
||  
 
||  
*
+
*  
  
 
|- valign="top"
 
|- valign="top"
 
| Week 5 <br /> 10/04  
 
| Week 5 <br /> 10/04  
 
||
 
||
*
+
; Monday 10/4
 +
*[[CSC231 Exercises with Mov, Arithmetic and Logic Instructions#Arithmetic_Instructions| Exercises with arithmetic instructions]]
 +
* <font color="magenta">'''Lab 4''', Part 2</font>
 +
; Wednesday 10/6
 +
* Representing negative numbers, Signed Magnitude, 1's complement, 2's complement.
 +
* [[CSC231 Exercises on Signed Numbers | Exercises]]
 +
; Friday 10/8
 +
* [[CSC231 Powers of 2 | A Table of powers of 2]]: this will be useful for the exercises of the day...
 +
* [[CSC231 C++ Program and infinite loops| C++ program looping forever]]...
 +
* [[CSC231 Python program and infinite loops | Python program looping forever]]...
 +
* [[CSC231 Mystery C Program with signed numbers | Problem of the day]]...
 
----
 
----
*
+
* [[CSC231 Lab 4: Debugger | Lab 4]]: Using the debugger
 +
* [[CSC231 Homework 4 2010 | Homework #4]] and [[CSC231 Homework 4 Solutions -- 2010| Solution]]
 
||  
 
||  
*
+
* Signed and unsigned numbers are covered in  [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH01/CH01-2.html#HEADING2-96 Sections 1.7 and 1.8] and  [http://maven.smith.edu/~thiebaut/classes/231_0607/doc/pcasm-book.pdf Chap. 2]
 +
* [http://en.wikipedia.org/wiki/Boolean_algebra_(introduction) Boolean Algebra]
  
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
 
| Week 6<br /> 10/11  
 
| Week 6<br /> 10/11  
 
||
 
||
* '''Monday''': '''Fall Break'''  
+
<tanbox>
 +
;Monday
 +
: '''Fall Break'''  
 +
</tanbox>
 +
;Wednesday 10/13
 +
* Review 2's complement
 +
* An [[CSC231 C++ Assembly Code| example]] illlustrating what compiler code looks like.
 +
* Logic Design: Building a "subtractor" with an adder, using only AND, OR, NOT and XOR gates.
 +
* Mul/Div
 +
* Exercise: Teller Machine
 +
; Friday 10/15
 +
* Addressing Modes
 +
* '''Question of the day''': What is an instruction set?  Is there a best way to define an instruction set?
 +
*  [http://en.wikipedia.org/wiki/X86_instruction_listings Pentium Instruction Set]
 +
* Cool videos for a rainy afternoon
 +
**[[Image:googleVideos.png | 100px ]] [http://video.google.com/videoplay?docid=-7758421725489622662&ei=hQK5Sb3TG5K-rwK4k53oAg&q=guido+rossun&hl=en Introduction to Python] by Guido van Rossun, from Google Videos.  The first 15 minutes are fine.  You can skip the rest!
 +
**[http://video.google.com/videoplay?docid=9023849479319414382&hl=en Intro to Python] (The first 5 minutes are good).
 +
** [[Image:GuidoVanRossun.jpg | 100px ]] More videos of  [http://video.google.com/videosearch?q=guido+rossun&hl=en&emb=0# Guido van Rossun], the creator of Python.
 +
* The main addressing modes:
 +
**inherent
 +
**register
 +
**immediate
 +
**direct
 +
**indirect/based/indexed
 +
**indirect with displacement
 +
**base-indexed
 +
**base-indexed with displacement
 +
* [[CSC231_Addressing_Mode_Exercises | Exercises on Addressing Modes]]
 +
* [http://www.asciitable.com/ Ascii Table]
 +
 
 +
----
 +
* No homework assignment this week.  Prepare for midterm!
 
||  
 
||  
*
+
*The signed and unsigned representations of numbers are covered in [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH01/CH01-2.html#HEADING2-96 Sections 1.7 and 1.8] of The Art of Assembly, and in [http://maven.smith.edu/~thiebaut/classes/231_0607/doc/pcasm-book.pdf Chapter 2] of Carter's PC Assembly Language.
 +
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH04/CH04-2.html#HEADING2-1 Addressing modes] are covered in Chapter 4 of The Art of Assembly. We won't cover "Displacement Only Addressing" modes (Section 4.6.2.1). Mentally replace 16-bit registers by 32-bit registers when reading this section.
  
 
|- valign="top"
 
|- valign="top"
 
| Week 7 <br /> 10/18  
 
| Week 7 <br /> 10/18  
 
||  
 
||  
*
+
<bluebox>
 +
; '''Monday 10/18''': In class <font color="magenta">Midterm Exam</font>
 +
: [[CSC231_Midterm_Preparation | Sample Questions]] to get ready...
 +
</bluebox>
 +
; '''Wednesday 10/20''':
 +
* The '''Loop''' instruction
 +
* [[CSC231 Loop Exercises | Exercises]] on loops
 +
* Review of addressing modes
 +
* Return to the [[CSC231_Addressing_Mode_Exercises | exercises on '''addressing modes''']], but now use loops
 +
; '''Friday 10/22''':
 +
* <font color="magenta">'''Lab 5'''</font>
 +
* Loops and Addressing Modes
 
----
 
----
*
+
* [[CSC231 Homework 5 2010 | Homework #5]] and [[CSC231 Homework 5 Solutions 2010 | Solution Programs]]
||  
+
* [[CSC231 Lab 5 2010 | Lab 5]]
*
+
||
 +
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-294 The Loop instruction]
 +
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-1.html#HEADING1-160 The Push and Pop instructions]
 +
 
  
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
 
| Week 8 <br /> 10/25  
 
| Week 8 <br /> 10/25  
 
||
 
||
*
+
<videoflash>zC5KFnSUPNo</videoflash>
 +
;Monday 10/25
 +
* The '''shift instructions''': SHR, SHL, logical and arithmetic variants.
 +
* Sound waves, a bit of physics
 +
* The format of wav sound files
 +
* A demo program: [[CSC231 readWaveFile.asm | readWaveFile.asm]]
 +
;Wednesday 10/27
 +
* Using a [[CSC231 Makefile for Lab 5 | Makefile]] for Lab 5
 +
* Challenge of the day: clip 8-bit samples by forcing overflow to 0xff...
 +
* Examples with wav files:
 +
* <font color="magenta">'''Lab 6'''</font>
 +
;Friday 10/29
 +
* Continue with <font color="magenta">'''Lab 6'''</font>
 
----
 
----
*  
+
* [[CSC231 Lab 6 2010 | Lab 6]]
 +
* [[CSC231 Homework 6 2010 | Homework 6]] and [[CSC231 Homework 6 Solution 2010 | Solution Program]]
  
 
||  
 
||  
*
+
* [https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ The Wav File Format]
 
+
* The '''shifts instructions''' are covered in [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-3.html#HEADING3-42 Chapter 6] of the [http://maven.smith.edu/~thiebaut/ArtOfAssembly/artofasm.html Art of Assembly] reference.
 
|- valign="top"
 
|- valign="top"
 
| Week 9 <br /> 11/01  
 
| Week 9 <br /> 11/01  
 
||
 
||
*  
+
;Monday 11/01
 +
* Functions
 +
** Using the stack
 +
** Passing parameters
 +
*** by value
 +
*** by reference
 +
*** functions returning values
 +
* [[CSC231 Exercises On Functions | Exercises on Functions]]
 +
;Wednesday 11/03
 +
* Review of functions: passing parameters through registers
 +
** push/pop
 +
** organization (example program: [[CSC231 maze.asm | maze.asm]])
 +
** examples involving copying buffers
 +
;Friday 11/05
 +
* Passing parameters through the stack
 +
* [[CSC231 Lab 7 2010 |<font color="magenta">''' Lab 7'''</font>]]
 
----
 
----
*
+
* [[CSC231 Homework 7 2010 | Homework 7]] and [[CSC231 Homework 7 Solution 2010 | Solution Program]]
 +
* [[CSC231 Lab 7 2010 | Lab 7]] and [[CSC220 Lab 7 Solutions 2010| Solution Programs]]
  
 
||  
 
||  
*  
+
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-98 The Call and Ret Instructions]
 +
* Functions and the topics associated with passing parameters are covered in Carter's Manual on Assembly Language, in [http://maven.smith.edu/~thiebaut/classes/231_0405/doc/pcasm-book.pdf Chapter 4], titled ''Subprograms''.
  
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
 
| Week 10 <br /> 11/08
 
| Week 10 <br /> 11/08
 
||
 
||
*
+
;Monday 11/08
 +
* We continue with [[CSC231 Lab 7 2010 |<font color="magenta">''' Lab 7'''</font>]]
 +
;Wednesday 11/10
 +
* [[CSC231 No-no! and Be-Careful! situations | No No, don't do that!]]
 +
* Int-returning function
 +
* Declaring temporary variables in functions
 +
* Passing by reference
 +
;Friday 11/12
 +
* Review
 +
** [[CSC231 SumProc1.asm |sumProc1.asm]]: Pass through registers
 +
** [[CSC231 SumProc2.asm |sumProc2.asm]]: Pass by value
 +
** [[CSC231 SumProc3.asm |sumProc3.asm]]: Int returning function
 +
** [[CSC231 SumProc4.asm |sumProc4.asm]]: Pass by reference
 +
** [[CSC231 SumProc5.asm |sumProc5.asm]]: <font color="magenta">'''Local variables'''</font>
 +
* Introduction to  [[CSC231 Homework 8 2010 | Homework 8]]
 +
* Top-Down design (again!)
 +
 
 
----
 
----
*
+
* [[CSC231 Lab 7 2010 | Lab 7]]
 +
* [[CSC231 Homework 8 2010 | Homework 8]] and [[CSC231 Homework 8 Solution Program 2010 | solution program]]
  
 +
||
 +
* the preprocessor directive '''%define''' is fully explained [http://www.tortall.net/projects/yasm/manual/html/nasm-preprocessor.html#nasm-macro-define here].
 +
* The [http://faydoc.tripod.com/cpu/pushad.htm PUSHAD] instruction 
  
||
 
*
 
 
 
 
|- valign="top"
 
|- valign="top"
 
| Week 11 <br /> 11/15  
 
| Week 11 <br /> 11/15  
 
||
 
||
*
+
; Monday 11/15
 +
* Compare instruction and [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-1.html#HEADING1-27 flag bits]
 +
* A [[CSC231 Flags Settings Examples | Program]] using compare instruction and showing flag settings
 +
* [[CSC231 Exercises with conditional jumps | Exsercises]] with conditional jumps
 +
; Wednesday 11/17
 +
* Continuation of  [[CSC231 Exercises with conditional jumps | Exsercises]] on conditional jumps
 +
; Friday 11/19
 +
* Functions + tests = '''Recursion'''
 +
* [[CSC220 Factorial.asm | factorial.asm]]
 
----
 
----
*
+
* No homework assignment this week!
  
 
||  
 
||  
*
+
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-1.html#HEADING1-27 The Flag Bits]
 +
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-226 Conditional Jumps]
 +
* [[CSC231 Pentium Instructions and Flags | What instructions modify flags]]
  
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
 
| Week 12 <br /> 11/22  
 
| Week 12 <br /> 11/22  
 
||
 
||
*
+
; Monday
* Wednesday: '''Thanksgiving Break'''
+
* Continuation of Coverage of Recursion
* Friday: '''Thanksgiving Break'''
+
* <!--videoflash>5X8cM2JiqzI</videoflash-->
 +
* Video: History of Computers
 +
<tanbox>
 +
<!--[[Image:dancingCalving.gif | right]]-->
 +
[[Image:turkeyCarcass.jpg | 200px | right]]
 +
; Wednesday: '''Thanksgiving Break'''
 +
; Friday: '''Thanksgiving Break'''
 +
</tanbox>
 
----
 
----
 
*
 
*
Line 124: Line 324:
 
| Week 13 <br /> 11/29  
 
| Week 13 <br /> 11/29  
 
||
 
||
*
+
; Monday 11/29
 +
* More on Recursion: Multiplication
 +
* [[CSC231 Recursive Multiplication | Recursive Multiplication Algorithm]]
 +
; Wednesday 12/1
 +
* [[CSC231 FindLargestOfArray.asm | Searching a 1-dimensional array for the largest/smallest element]]
 +
* Sketching binary-search on an array
 +
* A demo: comparison of interpreted versus compiled languages: [[CSC231: N-Queens Problem: interpreted vs compiled|The N-Queens test]]
 +
; Friday 12/3
 +
* Discussion: [http://en.wikipedia.org/wiki/Compiler_optimization compiler optimizations]
 +
* [http://en.wikibooks.org/wiki/Microprocessor_Design/Pipelined_Processors Pipelines]
 +
** <center>[[Image:CSC231_pipeline1.png|200px]]</center>
 +
** <center>[[Image:CSC231_pipeline2.png|400px]]</center>
 +
** <center>[[Image:CSC231_PentiumDie2.gif|400px]]</center>
 +
** <center>[[Image:CSC231_PentiumDie6core.jpg|400px]]</center>
 +
 
 +
----
 +
* [[CSC231 Homework 9 2010 | Homework #9]]  and [[CSC231 Homework 9 Solution 2010 | Solution Program]]
 
||
 
||
*
+
* [http://en.wikipedia.org/wiki/Compiler_optimization Compiler optimization] on wikipedia.
 
+
* [http://cs.smith.edu/~thiebaut/classes/231_0405/doc/pcasm-book.pdf Section 4.8] of Carter's Assembly Manual on recursion.
 +
* [http://en.wikibooks.org/wiki/Microprocessor_Design/Pipelined_Processors Pentium pipelining]
 +
* A very good description of the Pentium 4 Architecture at [http://www.hardwaresecrets.com/article/235 www.hardwaresecrets.com]
 +
* Some parameters for virtual memory (taken from [http://www.cp.eng.chula.ac.th/~piak/teaching/ca/vm.htm www.cp.eng.chula.ac.th]):
 +
**Typical range of parameters for virtual memory
 +
**
 +
<center>
 +
{|
 +
|block (page) size &nbsp;&nbsp;&nbsp;&nbsp;       
 +
|512-8192 bytes
 +
|-
 +
|hit time                         
 +
|1-10 clock cycles
 +
|-
 +
|miss penalty                 
 +
|100,000-600,000 clocks
 +
|-
 +
|(access time)               
 +
| (100,000-500,000 clocks)
 +
|-
 +
|(transfer time)               
 +
| (10,000-100,000 clocks)
 +
|-
 +
|miss rate                         
 +
|0.00001% - 0.001%
 +
|-
 +
|main memory size         
 +
|4 MB - 2048 MB
 +
|}
 +
</center>
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
 
| Week 14 <br /> 12/06  
 
| Week 14 <br /> 12/06  
 
||
 
||
*  
+
; Monday 12/06
 +
* Continue with pipelines
 +
* Virtual Memory
 +
; Wednesday 12/08
 +
* Cache Memory
 +
* Average Access Time
 +
* Back to compiler optimization
 +
**Pipeline-related
 +
***Delayed branches
 +
***Instruction reordering
 +
**Cache-oriented
 +
***use of registers instead of memory ([http://ee.hawaii.edu/~tep/EE160/Book/chap14/subsection2.1.1.2.html register variables])
 +
* A [[CSC231 generateRandomNumbers.asm| program]] to generate random numbers
 +
; Friday 12/10
 +
* 2-D arrays
 +
* Floating Point Numbers
 +
** Fixed-point format
 +
** [http://maven.smith.edu/~thiebaut/classes/231/floatingpoint.html Floating-Point Converter] applet.
 
----
 
----
*
+
* [[CSC231 Homework 10 2010 | (''Optional'') Homework #10]] and [[CSC231 Homework 10 Solution 2010| solution program]]
 
||  
 
||  
 +
* [http://webster.cs.ucr.edu/AoA/Windows/HTML/Arraysa2.html 2D Arrays]
 +
* [http://steve.hollasch.net/cgindex/coding/ieeefloat.html A good introduction to Floating Point Numbers], nicely presented.  Similary, a [http://www.cs.princeton.edu/introcs/91float/ page] from Princeton's Intro to CS on floating points.
 +
* [http://en.wikipedia.org/wiki/Floating_point General description] of the floating-point notation on Wikipedia. 
 +
* [http://www.python.org/doc/2.5.2/tut/node16.html A very good description of the limitations] of floating-point numbers in Python: Read it!
 +
* Also, not to be missed: [http://www.lahey.com/float.htm  The perils of floating-point]
 +
* [http://www.programmers-corner.com/tutorial/31?PHPSESSID=4bbf1f2b76df390e1bad01a9f8462854 Floating Point in Assembly]: some high level stuff!
 
*
 
*
 +
  
  
Line 141: Line 410:
 
| Week 15 <br /> 12/13  
 
| Week 15 <br /> 12/13  
 
||
 
||
* '''Monday''': '''Last Class'''
+
[[Image:CSC231RangeOfFloats.jpg |200px|right|link=http://jasss.soc.surrey.ac.uk/9/4/4.html]]
 +
; '''Monday''' ''<font color="magenta">Last Class</font>''
 +
* IEEE Floating-Point Representation
 +
** Exponent: 4 special cases: zero, denormalized numbers, infinity, NaN
 +
** [http://maven.smith.edu/~thiebaut/classes/231/floatingpoint.html Floating-Point Converter] applet.
 +
** Range of IEEE Floats
 +
** Compare range of floats to ints.  Ask [http://www.wolframalpha.com/input/?i=10^32+inches Wolfram Alpha] what is 10^32 inches!
 +
** Adding two floats
 +
** Examples of Floating-Point operations in Assembly
 +
*** [[CSC231 Float1.asm | float1.asm]]: printing a float in assembly
 +
*** [[CSC231 Float2.asm | float2.asm]]: transforms an int into a float
 +
*** [[CSC231 Float3.asm | float3.asm]]: computes  a = 10.5; b = 5.5; y = 3 * ( a - b ) + PI in assembly.
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
 
 
----
 
----
*
+
* [[CSC231_Lab_8 2010 | A Lab on Floating-Point Numbers] to explore on your own!
 +
* [[CSC231 Final Exam 2010 | Final Exam]] --> due date = ''12:00 p.m. on Monday December 20, 2010''
 
||  
 
||  
*
+
* [http://www.cs.umd.edu/class/spring2003/cmsc311/Notes/BinMath/addFloat.html Notes on adding floating-point numbers]
  
  
Line 153: Line 439:
 
|}
 
|}
  
=List of Programs=
+
* [[media:helpnotes.pdf | Help Notes]]
 +
 
 +
=List of Selected Programs=
 
== Assembly==
 
== Assembly==
  
*
+
* [[:Category:Asm | Assembly Programs]]
  
 
=Miscellaneous Information=
 
=Miscellaneous Information=
 +
 +
* [[CSC231 Pentium Instructions| List of Pentium Instructions]] with Op-Codes
 +
* [http://en.wikipedia.org/wiki/X86_instruction_listings Pentium Instruction Set]
 +
* [https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ The Wav File Format]
  
 
* [http://tango.csc.smith.edu/classwiki/index.php?title=CSC231_Things_to_Remember_when_Writing_Assembly_Programs Things to remember] when working on homework assignments...
 
* [http://tango.csc.smith.edu/classwiki/index.php?title=CSC231_Things_to_Remember_when_Writing_Assembly_Programs Things to remember] when working on homework assignments...
 +
 +
==Linux Related==
 +
* [http://bluemaster.iu.hio.no/edu/dark/lin-asm/syscalls.html System Calls]
 +
<br />
 +
 +
<br />
 +
 +
<br />
 +
 +
<br />
 +
 +
<br />
 +
 +
<br />
 +
 +
<br />
 +
[[Category:CSC231]][[Category:Asm]]

Latest revision as of 20:43, 3 November 2014

--D. Thiebaut 08:28, 6 January 2011 (EST)



Back to Main Page | Class Wiki


Weekly Schedule

Week Topics Reading
Week 1
9/08
Wed 9/8
  • Introduction
  • Syllabus
  • The PC
    • What's inside?
    • The main players
  • First program in assembly
    • structure
    • presentation
    • documentation
Fri 9/10

Week 2
9/13
Monday 9/13
  • Mini Lab
  • Assembling with the -l option to generate a listing
     nasm -f elf -F stabs -l helloworld.S helloworld.asm

  • The memory contains numbers only
  • Boolean Algebra
  • Binary system
  • logic expressions
Wednesday 9/15
  • Digital Electronics Lab in FH143
Friday 9/17
  • Digital Electronics Lab in FH143

Week 3
9/20
Pentium.gif
MultiCore.jpg
Monday 9/20
  • Three-bit adder. Review
  • A word on Verilog and FPGAs Examples
  • Architecture of the Pentium (simplified)
Wednesday 9/22
Friday 9/24
  • Comments on lab reports
  • Once again: Everything in memory is a number!
  • Review the reverse engineering example
  • Exercises on Binary/Hexadecimal (do on your own!)
  • The mov instruction (covered here).
    • Introduction to the 32-bit registers: EAX, EBX, ECX, EDX
    • Introduction to the 16-bit registers: AX, BX, CX, DX
    • Introduction to the 8-bit registers: AL, AH, BL, BH, CL, CH, DL, DH

Week 4
9/27
FibonacciPigeons.jpg
Monday 9/27
Wednesday 9/29
  • MOUNTAIN DAY!
Friday 10/1
  • Arithmetic instructions: ADD, SUB, INC, DEC
  • Logic instructions: AND, OR, NOT, XOR
  • using DDD to debug programs
  • Lab 4, Part 1

Week 5
10/04
Monday 10/4
Wednesday 10/6
  • Representing negative numbers, Signed Magnitude, 1's complement, 2's complement.
  • Exercises
Friday 10/8

Week 6
10/11
Monday
Fall Break
Wednesday 10/13
  • Review 2's complement
  • An example illlustrating what compiler code looks like.
  • Logic Design: Building a "subtractor" with an adder, using only AND, OR, NOT and XOR gates.
  • Mul/Div
  • Exercise: Teller Machine
Friday 10/15
  • Addressing Modes
  • Question of the day: What is an instruction set? Is there a best way to define an instruction set?
  • Pentium Instruction Set
  • Cool videos for a rainy afternoon
  • The main addressing modes:
    • inherent
    • register
    • immediate
    • direct
    • indirect/based/indexed
    • indirect with displacement
    • base-indexed
    • base-indexed with displacement
  • Exercises on Addressing Modes
  • Ascii Table

  • No homework assignment this week. Prepare for midterm!
  • The signed and unsigned representations of numbers are covered in Sections 1.7 and 1.8 of The Art of Assembly, and in Chapter 2 of Carter's PC Assembly Language.
  • Addressing modes are covered in Chapter 4 of The Art of Assembly. We won't cover "Displacement Only Addressing" modes (Section 4.6.2.1). Mentally replace 16-bit registers by 32-bit registers when reading this section.
Week 7
10/18
Monday 10/18
In class Midterm Exam
Sample Questions to get ready...
Wednesday 10/20
Friday 10/22
  • Lab 5
  • Loops and Addressing Modes


Week 8
10/25

Monday 10/25
  • The shift instructions: SHR, SHL, logical and arithmetic variants.
  • Sound waves, a bit of physics
  • The format of wav sound files
  • A demo program: readWaveFile.asm
Wednesday 10/27
  • Using a Makefile for Lab 5
  • Challenge of the day: clip 8-bit samples by forcing overflow to 0xff...
  • Examples with wav files:
  • Lab 6
Friday 10/29
  • Continue with Lab 6

Week 9
11/01
Monday 11/01
  • Functions
    • Using the stack
    • Passing parameters
      • by value
      • by reference
      • functions returning values
  • Exercises on Functions
Wednesday 11/03
  • Review of functions: passing parameters through registers
    • push/pop
    • organization (example program: maze.asm)
    • examples involving copying buffers
Friday 11/05
  • Passing parameters through the stack
  • Lab 7

Week 10
11/08
Monday 11/08
Wednesday 11/10
Friday 11/12

  • the preprocessor directive %define is fully explained here.
  • The PUSHAD instruction
Week 11
11/15
Monday 11/15
Wednesday 11/17
Friday 11/19

  • No homework assignment this week!
Week 12
11/22
Monday
  • Continuation of Coverage of Recursion
  • Video: History of Computers
TurkeyCarcass.jpg
Wednesday
Thanksgiving Break
Friday
Thanksgiving Break


Week 13
11/29
Monday 11/29
Wednesday 12/1
Friday 12/3

block (page) size      512-8192 bytes
hit time 1-10 clock cycles
miss penalty 100,000-600,000 clocks
(access time) (100,000-500,000 clocks)
(transfer time) (10,000-100,000 clocks)
miss rate 0.00001% - 0.001%
main memory size 4 MB - 2048 MB
Week 14
12/06
Monday 12/06
  • Continue with pipelines
  • Virtual Memory
Wednesday 12/08
  • Cache Memory
  • Average Access Time
  • Back to compiler optimization
    • Pipeline-related
      • Delayed branches
      • Instruction reordering
    • Cache-oriented
  • A program to generate random numbers
Friday 12/10


Week 15
12/13
CSC231RangeOfFloats.jpg
Monday Last Class
  • IEEE Floating-Point Representation
    • Exponent: 4 special cases: zero, denormalized numbers, infinity, NaN
    • Floating-Point Converter applet.
    • Range of IEEE Floats
    • Compare range of floats to ints. Ask Wolfram Alpha what is 10^32 inches!
    • Adding two floats
    • Examples of Floating-Point operations in Assembly






  • [[CSC231_Lab_8 2010 | A Lab on Floating-Point Numbers] to explore on your own!
  • Final Exam --> due date = 12:00 p.m. on Monday December 20, 2010



List of Selected Programs

Assembly

Miscellaneous Information

Linux Related