Open main menu

CDOT Wiki β

Changes

Fall 2022 SPO600 Weekly Schedule

8,267 bytes added, 08:40, 14 September 2022
no edit summary
# Start work on [[SPO600 Code Review Lab|Lab 1]]. Blog your work.
 
== Week 2 ==
 
=== Week 2 - Class I ===
 
<!--
==== Video ====
* [https://web.microsoftstream.com/video/cf653b70-1000-4dbe-a45f-184625eb45c1 Summary video recording from class]
* '''Reminder:''' The Tuesday classes are live. An edited recording is provided for reference only - it is no substitute for attending class, taking notes, and asking questions!
-->
 
==== Machine Language, Assembly Language ====
{{Admon/tip|Follow the Links!|To get the full benefit of the following material, please follow the links embedded within it. For additional detail, see the Category links at the bottom of those pages -- for example, the [[Category:Computer Architecture|Computer Architecture]] category linked from many of the following pages has over 30 pages of content.}}
 
* Although we program computers in a variety of languages, they can really only execute one langauge: [[Machine Language]], which is encoded in an architecture-specific binary code, sometimes called object code.
* Machine language is not easy to read. [[Assembly Language]] corresponds very closely to machine language, but is (sort of!) human-readable.
* Assembly language is converted into machine code by a particular type of compiler called an [[Assembler]] (sometimes the language itself is also referred to as "Assembler").
 
==== 6502 ====
Modern processors are complex - the reference manual for 64-bit ARM processors is over 11000 pages long! - so we 're going to look at assembly lanaguage on a much simpler processor to get started. This processor is the 6502, a processor used in many early home and personal computers as well as video game systems, including the Commodore PET, VIC-20, C64; the Apple II; the Atari 400 and 800 computers and 5600 video game system, and many others.
 
* Introduction to the [[6502]] (note the Resources links on that page)
* Introduction to the [[6502 Instructions - Introduction|6502 Instructions]]
* Introduction to the [[6502 Addressing Modes]]
* Information about the [[6502 Emulator]] which we will use in this course, and some [[6502_Emulator_Example_Code|example code]]
* Link to the actual [http://6502.cdot.system 6502 emulator]
 
==== Lab 2 ====
* [[6502 Assembly Language Lab]] - Lab 2
 
<!--
=== Week 2 - Class II ===
 
==== Videos ====
* [https://web.microsoftstream.com/video/1e70e6a8-0fff-40de-b0e3-1297442572b8 Week 2 Announcements]
* [https://web.microsoftstream.com/video/01d6cae5-e490-40fd-85a1-2000025fdb68 6502 Emulator and Debugger]
* [https://web.microsoftstream.com/video/ed7aedf1-fe6f-4b72-bbf1-c9b4e6e80af9 Calculating 6502 Program Execution Time]
 
-->
=== Week 2 Deliverables ===
# If not already completed last week:
## Set up your [[SPO600 Communication Tools]]
## Complete [[SPO600 Code Review Lab|Lab 1]] and blog your work.
# Study the [[6502 Instructions - Introduction|6502 Instructions]] and [[6502 Addressing Modes]] and make sure you understand what each one does.
# Complete [[6502 Assembly Language Lab|Lab 2]] and blog your results.
<!-- Memory System Design - Paging ; Memory - Cache/Numa ; Memory - Observability, Barriers -->
*** [[Endian|Endianness]]
** Code that takes advantage of platform-specific features
* Reasons for writing code in Assembl== Week 2 == === Week 2 - Class I === ==== Video ====* [https://web.microsoftstream.com/video/cf653b70-1000-4dbe-a45f-184625eb45c1 Summary video recording from class]* '''Reminder:''' The Tuesday classes are live. An edited recording is provided for reference only - it is no substitute for attending class, taking notes, and asking questions! ==== Machine Language, Assembly Language ===={{Admon/tip|Follow the Links!|To get the full benefit of the following material, please follow the links embedded within it. For additional detail, see the Category links at the bottom of those pages -- for example, the [[Category:Computer Architecture|Computer Architecture]] category linked from many of the following pages has over 30 pages of content.}} * Although we program computers in a variety of languages, they can really only execute one langauge: [[Machine Language]], which is encoded in an architecture-specific binary code, sometimes called object code.* Machine language is not easy to read. [[Assembly Language]] corresponds very closely to machine language, but is (sort of!) human-readable.* Assembly language is converted into machine code by a particular type of compiler called an [[Assembler]] (sometimes the language itself is also referred to as "Assembler"). ==== 6502 ====Modern processors are complex - the reference manual for 64-bit ARM processors is over 7000 pages long! - so we 're going to look at assembly lanaguage on a much simpler processor to get started. This processor is the 6502. * Introduction to the [[6502]] (note the Resources links on that page)* Introduction to the [[6502 Instructions - Introduction|6502 Instructions]]* Information about the [[6502 Emulator]] which we will use in this course, and some [[6502_Emulator_Example_Code|example code]]* Link to the actual [http://6502.cdot.system 6502 emulator] === Week 2 - Class II === ==== Videos ====* [https://web.microsoftstream.com/video/1e70e6a8-0fff-40de-b0e3-1297442572b8 Week 2 Announcements]* [https://web.microsoftstream.com/video/01d6cae5-e490-40fd-85a1-2000025fdb68 6502 Emulator and Debugger]* [https://web.microsoftstream.com/video/ed7aedf1-fe6f-4b72-bbf1-c9b4e6e80af9 Calculating 6502 Program Execution Time] ==== Lab 2 ====* [[6502 Assembly Language Lab]] - Lab 2 === Week 2 Deliverables ===# If not already completed:## Set up your [[SPO600 Communication Tools]]## Complete [[SPO600 Code Review Lab|Lab 1]] and blog your work.# Study the [[6502 Instructions - Introduction|6502 Instructions]] and make sure you understand what each one does# Complete [[6502 Assembly Language Lab|Lab 2]] and blog your resultsy Langauge include:
** Performance
** [[Atomic Operation|Atomic Operations]]
* Compression techniques
** Huffman encoding / Adaptive arithmetic encoding
*** Instead of fixed-length numbers, == Week 2 == === Week 2 - Class I === ==== Video ====* [https://web.microsoftstream.com/video/cf653b70-1000-4dbe-a45f-184625eb45c1 Summary video recording from class]* '''Reminder:''' The Tuesday classes are live. An edited recording is provided for reference only - it is no substitute for attending class, taking notes, and asking questions! ==== Machine Language, Assembly Language ===={{Admon/tip|Follow the Links!|To get the full benefit of the following material, please follow the links embedded within it. For additional detail, see the Category links at the bottom of those pages -- for example, the [[Category:Computer Architecture|Computer Architecture]] category linked from many of the following pages has over 30 pages of content.}} * Although we program computers in a variety of languages, they can really only execute one langauge: [[Machine Language]], which is encoded in an architecture-specific binary code, sometimes called object code.* Machine language is not easy to read. [[Assembly Language]] corresponds very closely to machine language, but is (sort of!) human-readable.* Assembly language is converted into machine code by a particular type of compiler called an [[Assembler]] (sometimes the language itself is also referred to as "Assembler"). ==== 6502 ====Modern processors are complex - the reference manual for 64-bit ARM processors is over 7000 pages long! - so we 're going to look at assembly lanaguage on a much simpler processor to get started. This processor is the 6502. * Introduction to the [[6502]] (note the Resources links on that page)* Introduction to the [[6502 Instructions - Introduction|6502 Instructions]]* Information about the [[6502 Emulator]] which we will use in this course, and some [[6502_Emulator_Example_Code|example code]]* Link to the actual [http://6502.cdot.system 6502 emulator] === Week 2 - Class II === ==== Videos ====* [https://web.microsoftstream.com/video/1e70e6a8-0fff-40de-b0e3-1297442572b8 Week 2 Announcements]* [https://web.microsoftstream.com/video/01d6cae5-e490-40fd-85a1-2000025fdb68 6502 Emulator and Debugger]* [https://web.microsoftstream.com/video/ed7aedf1-fe6f-4b72-bbf1-c9b4e6e80af9 Calculating 6502 Program Execution Time] ==== Lab 2 ====* [[6502 Assembly Language Lab]] - Lab 2 === Week 2 Deliverables ===# If not already completed:## Set up your [[SPO600 Communication Tools]]## Complete [[SPO600 Code Review Lab|Lab 1]] and blog your work.# Study the [[6502 Instructions - Introduction|6502 Instructions]] and make sure you understand what each one does# Complete [[6502 Assembly Language Lab|Lab 2]] and blog your results variable-length numbers are used, with the most common values encoded in the smallest number of bits. This is an effective strategy if the distribution of values in the data set is uneven.
** Repeated sequence encoding (1D, 2D, 3D)
*** Run length encoding is an encoding scheme that records the number of repeated values. For example, fax messages are encoded as a series of numbers representing the number of white pixels, then the number of black pixels, then white pixels, then black pixels, alternating to the end of each line. These numbers are then represented with adaptive artithmetic encoding.