Difference between revisions of "LU-MOP-en"

From DiLab
Jump to: navigation, search
(Created page with "__NOTOC__ <!--{{TocRight|2}}--> <big> '''Shortcuts:''' Calendar | Assignments | Resources | #{{CURRENTDAY2}}.{{CURRENT...")
 
(Calendar)
Line 23: Line 23:
|
|
====03.09.21====
====03.09.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 35: Line 34:
|
|
====14.09.21====
====14.09.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 47: Line 45:
|
|
====17.09.21====
====17.09.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 61: Line 58:


|
|
* Assignment '''Lab_Binary''' - Lab


|- style='vertical-align: top;'
|- style='vertical-align: top;'
|
|
====21.09.21====
====21.09.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 78: Line 73:
|
|
====24.09.21====
====24.09.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 92: Line 86:


|
|
* Assignment '''Lab_Complement''' - Lab


|- style='vertical-align: top;'
|- style='vertical-align: top;'
|
|
====28.09.21====
====05.10.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 106: Line 98:
|
|


|- style='vertical-align: top;'
|
====01.10.21====
11:10
|
{| width='100%' style='background-color:#ddd;'
|<big>'''Lab'''</big>
|}
Developing and testing a simple Assembly program. Using cross-compilation tools. Introduction to the Make system.
Developing and testing a simple Assembly program. Using cross-compilation tools. Introduction to the Make system.

|
* Assignment '''Lab_Make''' - Lab


|- style='vertical-align: top;'
|- style='vertical-align: top;'
|
|
====05.10.21====
====12.10.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 131: Line 111:
|
|


|- style='vertical-align: top;'
|
====08.10.21====
11:10
|
{| width='100%' style='background-color:#ddd;'
|<big>'''Lab'''</big>
|}
Advanced features of the Make system.
Advanced features of the Make system.

|
* Assignment '''Lab_Make_2''' - Lab


|- style='vertical-align: top;'
|- style='vertical-align: top;'
|
|
====12.10.21====
====12.10.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 156: Line 124:
|
|


|- style='vertical-align: top;'
|
====15.10.21====
11:10
|
{| width='100%' style='background-color:#ddd;'
|<big>'''Lab'''</big>
|}
Evaluating and following the code "on paper".
Evaluating and following the code "on paper".

|
* Assignment '''Lab_Dry_Run''' - Lab


|- style='vertical-align: top;'
|- style='vertical-align: top;'
|
|
====19.10.21====
====19.10.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 184: Line 140:
|
|
====22.10.21====
====22.10.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 198: Line 153:


|
|
* Assignment '''Lab_Debug''' - Lab
* '''Due''' '''HW1''' - Arithmetic progression
* '''Due''' '''HW1''' - Arithmetic progression


Line 204: Line 158:
|
|
====26.10.21====
====26.10.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 213: Line 166:
|
|


|- style='vertical-align: top;'
|
====29.10.21====
11:10
|
{| width='100%' style='background-color:#ddd;'
|<big>'''Lab'''</big>
|}
TBD
TBD

|
* Assignment '''Lab_TBD''' - Lab


|- style='vertical-align: top;'
|- style='vertical-align: top;'
|
|
====02.11.21====
====02.11.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 238: Line 179:
|
|


|- style='vertical-align: top;'
|
====05.11.21====
11:10
|
{| width='100%' style='background-color:#ddd;'
|<big>'''Lab'''</big>
|}
TBD
TBD

|
* Assignment '''Lab_TBD''' - Lab
* '''Due''' '''HW2''' - Matrix multiplication
* '''Due''' '''HW2''' - Matrix multiplication


Line 255: Line 185:
|
|
====09.11.21====
====09.11.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 267: Line 196:
|
|
====12.11.21====
====12.11.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 282: Line 210:
|
|
====16.11.21====
====16.11.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 293: Line 220:
* '''Due''' '''M1P2''' - Midterm 1 programming task 2, tested
* '''Due''' '''M1P2''' - Midterm 1 programming task 2, tested


|- style='vertical-align: top;'
|
====23.11.21====
11:10
|
{| width='100%' style='background-color:#ddd;'
|<big>'''Lab'''</big>
|}
TBD
TBD

|
* Assignment '''Lab_TBD''' - Lab


|- style='vertical-align: top;'
|- style='vertical-align: top;'
|
|
====26.11.21====
====26.11.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 321: Line 236:
|
|
====30.11.21====
====30.11.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'
Line 330: Line 244:
|
|


|- style='vertical-align: top;'
|
====03.12.21====
11:10
|
{| width='100%' style='background-color:#ddd;'
|<big>'''Lab'''</big>
|}
Review of the course topics
Review of the course topics

|
* Assignment '''Lab_Summary''' - Lab
* '''Due By midnight''' '''Proj''' - Project
* '''Due By midnight''' '''Proj''' - Project


Line 358: Line 261:
|
|
====16.12.21====
====16.12.21====
11:10
|
|
{| width='100%' style='background-color:#ddd;'
{| width='100%' style='background-color:#ddd;'

Revision as of 07:00, 12 October 2021

Shortcuts: Calendar | Assignments | Resources | Today (if there is a class) Course: Assembly Programming



Calendar

Date Topic, content Deliverables

03.09.21

Introduction

Microprocessors and microcontrollers. Applications. Architectures. Coourse outline.

14.09.21

Hexadecimal arithmetic

Representation of non-negative numbers in hardware, registers and memory. Decimal, binary, octal, and hexadecimal systems. Converting between the systems.

17.09.21

Lab :: Quiz 1

Lab

Practicing the conversion between the counting systems

Quiz 1

Decimal, binary, octal and hexadecimal systems.

21.09.21

Two's complement

Representing negative numbers in hardware. Register size, and why it is important. Methods for encoding negative numbers: packed, signed, bias, one's complement and two's complement. Converting between the value and two's complement in binary and hexadecimal systems.

24.09.21

Lab :: Quiz 2

Lab

Exercises with the two's complement

Quiz 2

Two's complement.

05.10.21

Processor architecture

Architecture of a processor. Registers, register file, ALU, datapath. CISC vs. RISC architectures. x86 architecture as CISC representative. ARM architecture as RISC. Instruction encoding.

Developing and testing a simple Assembly program. Using cross-compilation tools. Introduction to the Make system.

12.10.21

Computing environment

Environment and tools for compiling and debugging Assembly programs. Compiler, preprocessor, assembly, linker, loader, debugger. Cross-compilation and toolchains. Emulators and virtual machines.

Advanced features of the Make system.

12.10.21

ARM Assembly and arithmetic

Introduction to ARM Assembly language and programming. Instruction types. Arithmetic instructions. MOV, ADD, SUB. MVN, ADC, SBC, RSB, RSC. Barrel Shifter.

Evaluating and following the code "on paper".

19.10.21

Flow control and tests

Flow control in Assembly. Branch instructions. B, BL, BX, BLX. Working directly with PC register. CPSR flags. Condition field. Bit operations. AND, ORR, EOR, BIC, shift and rotation. CMP, CMN, TST, TEQ. Fast flags and the S postfix.

22.10.21

Lab :: Quiz 3

Lab

Debugging Assembly programs. Gnu debugger gdb.

Quiz 3

Code comprehension.

  • Due HW1 - Arithmetic progression

26.10.21

Memory instructions

Reading and writing data to memory. Memory access instructions. STR, LDR, STRB, STRH, LDRB, LDRH, LDRSB, LDRSH. Addressing modes: offset, pre-indexed and post-indexed. Using barrel shifter with addressing. Data alignment in memory.

TBD

02.11.21

Calling subroutines and interfacing with C

Variable types in C: static, automatic and dynamic. Calling subroutines and parameter passing conventions. Parameters and return value. Stack and registers. Saving the registers, the context. Loading and storing multiple registers: LDM, STM. Interfacing between Assembly and C.

TBD

  • Due HW2 - Matrix multiplication

09.11.21

Symbols

Symbol encoding in hardware and software. Code tables. ASCII. EBCDIC. ISO code tables. Foreign letter symbols. UTF-8, UTF-16. Strings in C and memory. Converting values to symbols and strings.

12.11.21

Midterm

Data representation in memory. Assembly code comprehension. Two programming tasks.

  • Assignment Proj - Project

16.11.21

Expressions and Macro commands

Expressions in Assembly. Operators in expressions. Constants. Assigning values to symbols. Directives: .set, .equiv, .eqv. Conditional compilation. Directives .if, .ifdef, .endif., ifb, .ifc, .ifeqs. More conditionals .ifeq, .ifge, .ifne and others. Macro commands: .macro, .endm., .rept. Recursive macros. Local macros. Macros across sections.

  • Due M1P1 - Midterm 1 programming task 1, tested
  • Due M1P2 - Midterm 1 programming task 2, tested

TBD

26.11.21

Inline Assembly

Including Assembly in C code. Inline code and Assembly code operands. Tasks for the compiler, linker and loader. Dynamic loaders and libraries.

30.11.21

Optimizations

Execution time for instructions. Case study for code optimization. Leveraging the documentation and specification of instructions. Reordering the code. Unrolling loops. Taking advantage of branch prediction. Cache memory and the code performance.

Review of the course topics

  • Due By midnight Proj - Project

13-22.12.2021

Exam week

Time for exams

16.12.21

Exam

Data representation in memory. Assembly code comprehension. Multiple choice questions and a programming task.

  • Due ExamP1 - Exam programming task, tested

Assignments

Resources