Difference between revisions of "CSC231 Schedule 2010"
(→Weekly Schedule) |
|||
(146 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 44: | Line 48: | ||
| 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 | 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 1 | Mini Lab #1]] | ||
* [[CSC231 Lab 2 (Digital Electronics) | Lab #2 ]] (Wednesday) | * [[CSC231 Lab 2 (Digital Electronics) | Lab #2 ]] (Wednesday) | ||
* [[CSC231 Lab 3 (Digital Electronics) | Lab #3 ]] (Friday) | * [[CSC231 Lab 3 (Digital Electronics) | Lab #3 ]] (Friday) | ||
− | * [[CSC231 Homework 1 2010 | Homework #1 ]] | + | * [[CSC231 Homework 1 2010 | Homework #1 ]] and [[CSC231 Homework 1 Solutions 2010 | Solution Programs]] |
|| | || | ||
* | * | ||
Line 70: | Line 74: | ||
[[Image:Pentium.gif|right|100px]] | [[Image:Pentium.gif|right|100px]] | ||
[[Image:MultiCore.jpg|right|100px]] | [[Image:MultiCore.jpg|right|100px]] | ||
− | ;Monday | + | ;Monday 9/20 |
* Three-bit adder. Review | * Three-bit adder. Review | ||
* A word on Verilog and FPGAs [http://www.asic-world.com/verilog/gate1.html#Examples Examples] | * A word on Verilog and FPGAs [http://www.asic-world.com/verilog/gate1.html#Examples Examples] | ||
* Architecture of the Pentium (simplified) | * Architecture of the Pentium (simplified) | ||
− | ;Wednesday | + | ;Wednesday 9/22 |
* [[CSC231 ReverseEngineering.lst | Reverse engineering a listing]], and [[CSC231 ReverseEngineeringSol.asm|solution]]. | * [[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!) | * [[CSC231 Exercises Binary Hexadecimal | Exercises on Binary/Hexadecimal]] (do on your own!) | ||
− | * [http:// | + | * 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://maven.smith.edu/~thiebaut/ArtOfAssembly/CH03/CH03-1.html Basic Computer Organization], Sections 3.0, 3.1, 3.3.1 | ||
Line 86: | Line 99: | ||
* [http://webster.cs.ucr.edu/AoA/Linux/HTML/DataRepresentation2.html#998917 Bits, Nibbles, Bytes] | * [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://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 | ||
|| | || | ||
− | + | <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 |
− | + | * <!--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 177: | 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 | ||
+ | |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 194: | Line 410: | ||
| Week 15 <br /> 12/13 | | Week 15 <br /> 12/13 | ||
|| | || | ||
− | + | [[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 206: | 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... | ||
Line 232: | 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)
Contents
Weekly Schedule
Week | Topics | Reading | ||||||||||||||
Week 1 9/08 |
|
| ||||||||||||||
Week 2 9/13 |
nasm -f elf -F stabs -l helloworld.S helloworld.asm
|
| ||||||||||||||
Week 3 9/20 |
|
| ||||||||||||||
Week 4 9/27 |
|
| ||||||||||||||
Week 5 10/04 |
|
| ||||||||||||||
Week 6 10/11 |
|
| ||||||||||||||
Week 7 10/18 |
|
| ||||||||||||||
Week 8 10/25 |
|
| ||||||||||||||
Week 9 11/01 |
|
| ||||||||||||||
Week 10 11/08 |
|
|||||||||||||||
Week 11 11/15 |
|
|||||||||||||||
Week 12 11/22 |
|
| ||||||||||||||
Week 13 11/29 |
|
| ||||||||||||||
Week 14 12/06 |
|
| ||||||||||||||
Week 15 12/13 |
|
|
List of Selected Programs
Assembly
Miscellaneous Information
- Things to remember when working on homework assignments...
Linux Related