Difference between revisions of "CSC231 Schedule 2010"

From dftwiki3
Jump to: navigation, search
(Weekly Schedule)
 
(71 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
--[[User:Thiebaut|D. Thiebaut]] 08:28, 6 January 2011 (EST)
 +
----
 +
 +
<br />
 
<center>
 
<center>
 
[[CSC231 | Back to Main Page]] | [http://cs.smith.edu/classwiki/index.php/CSC231_Page_(2010)  Class Wiki]
 
[[CSC231 | Back to Main Page]] | [http://cs.smith.edu/classwiki/index.php/CSC231_Page_(2010)  Class Wiki]
Line 193: Line 197:
 
* Loops and Addressing Modes
 
* Loops and Addressing Modes
 
----
 
----
* [[CSC231 Homework 5 2010 | Homework #5]]  
+
* [[CSC231 Homework 5 2010 | Homework #5]] and [[CSC231 Homework 5 Solutions 2010 | Solution Programs]]
 
* [[CSC231 Lab 5 2010 | Lab 5]]
 
* [[CSC231 Lab 5 2010 | Lab 5]]
 
||
 
||
Line 218: Line 222:
 
----
 
----
 
* [[CSC231 Lab 6 2010 | Lab 6]]
 
* [[CSC231 Lab 6 2010 | Lab 6]]
* [[CSC231 Homework 6 2010 | Homework 6]]
+
* [[CSC231 Homework 6 2010 | Homework 6]] and [[CSC231 Homework 6 Solution 2010 | Solution Program]]
  
 
||  
 
||  
Line 237: Line 241:
 
* Review of functions: passing parameters through registers
 
* Review of functions: passing parameters through registers
 
** push/pop
 
** push/pop
** organization (example program: [[CSC231 RecursiveMazeVisit.asm | maze.asm]])
+
** organization (example program: [[CSC231 maze.asm | maze.asm]])
 
** examples involving copying buffers
 
** 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]
 
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-98 The Call and Ret Instructions]
Line 249: Line 257:
 
| 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 282: 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 299: 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 316: Line 444:
 
== Assembly==
 
== Assembly==
  
* [[CSC231 FirstProg.asm | First program]] in assembly
+
* [[:Category:Asm | Assembly Programs]]
* [[CSC231_skeleton_program | Skeleton program]]
 
* [[CSC231 Hello World on Mac | Hello world!]] for the Mac
 
  
 
=Miscellaneous Information=
 
=Miscellaneous Information=
Line 343: Line 469:
  
 
<br />
 
<br />
[[Category:CSC231]]
+
[[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