BITL MCU

From DiLab
Revision as of 23:50, 30 September 2021 by Leo (talk | contribs) (13-22.12.21)
Jump to: navigation, search

Shortcuts: Calendar | Assignments | Resources | Today (if there is a class) Course: Introduction to Processors

Calendar

Date Topic, content Deliverables

14.09.21

11:10

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

11:10

Lab_Binary :: Quiz 1

Lab_Binary

Practicing the conversion between the counting systems



Quiz 1

Decimal, binary, octal and hexadecimal systems.



  • Assignment Lab_Binary


21.09.21

11:10

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

11:10

Lab_Complement :: Quiz 2

Lab_Complement

Exercises with the two's complement



Quiz 2

Two's complement.



  • Assignment Lab_Complement


28.09.21

11:10

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.


01.10.21

11:10

Lab_Make

Make system, using for compilation and testing

  • Assignment Lab_Make


05.10.21

11:10

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.


08.10.21

11:10

Lab_TBD

TBD

  • Assignment Lab_TBD


12.10.21

11:10

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.


15.10.21

11:10

Lab_TBD

TBD

  • Assignment Lab_TBD


19.10.21

11:10

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

11:10

Lab_TBD

TBD

  • Assignment Lab_TBD
  • Due HW1 - Arithmetic progression


26.10.21

11:10

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.


29.10.21

11:10

Lab_TBD

TBD

  • Assignment Lab_TBD


02.11.21

11:10

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.


05.11.21

11:10

Lab_TBD

TBD

  • Assignment Lab_TBD
  • Due HW2 - Matrix multiplication


09.11.21

11:10

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

11:10

Midterm

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


  • Assignment Proj - Project


16.11.21

11:10

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


23.11.21

11:10

Lab_TBD

TBD

  • Assignment Lab_TBD


26.11.21

11:10

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

11:10

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.


03.12.21

11:10

Lab_Summary

Review of the course topics

  • Assignment Lab_Summary
  • 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