Course details

Advanced Assembly Languages

IPA Acad. year 2023/2024 Summer semester 5 credits

Protected mode of the Pentium based processors: protection principles, registers, memory management, instruction set. Techniques of programming in the protected mode, task management, virtual mode. Low-lewel programming demonstration in more complex applications. Programming using the multimedia instruction sets of the Intel processors (MMX, SSE and AVX). Introduction to the 64-bit processors. ARM processors assembler and its vector instruction extension NEON.

Guarantor

Course coordinator

Language of instruction

Czech, English

Completion

Examination (written)

Time span

  • 26 hrs lectures
  • 16 hrs pc labs
  • 10 hrs projects

Assessment points

  • 60 pts final exam (50 pts written part, 10 pts test part, 40 pts oral part)
  • 16 pts numeric exercises
  • 24 pts projects

Department

Lecturer

Instructor

Learning objectives

To give the students better knowledge of developing of more complex low-applications. To teach them how to use the multimedia extension instructions of the Intel processors (MMX, SSE and AVX). To teach them basic principles of the protected mode, programming in the protected mode and use of the low-level API. To introduce the 64-bit processors. To introduce them assembler of the ARM and its vector extension NEON.
Basic principles of the protected mode of the IA-32 architecture. Development of the applications using the MMX, SSE and AVX instructions. Low level programming of libraries and applications. Programming in the ARM assembler.

Why is the course taught

This course aims at low level programming necessary to optimize code or in case of OS programming to be able to use processor specific instructions that are not available in high level programming languages. Optimizations in assembler enable programmers to keep complete control of the resulting code (its size and/or effectivity).

Prerequisite knowledge and skills

Basic knowledge of the assembly language of x86 processor family and C language is necessary. Student has to be able to work with the NASM.

Study literature

  • Orság, F.: Studijní opora k předmětu IPA
  • Zbořil, F.: Strojově orientované jazyky, skripta, VUT v Brně, 1991, ISBN 80-214-0349-7
  • Hall, R. B.:Assembly Programming and Computer Architecture for Software Engineers. Prospect Press. 2017. ISBN: 978-1943153329.
  • Hyde, R.: The Art of Assembly Language, No Strach, 2003, ISBN 1886411972
  • Kusswurm, D.: Modern X86 assembly language programming: 32-bit, 64-bit, SSE, and AVX. Apress, 2014. ISBN: 9781484200650.
  • Irvine, K.R.: Assembly Language for Intel-Based Computers, Prentice Hall, 2002, ISBN 0130910139
  • Bistry, D.: The Complete Guide to MMX Technology, McGraw-Hill/TAB Electronics, 1997, ISBN 0070061920
  • Abel, P.: IBM PC Assembly Language and Programming, Prentice-Hall, Inc., 1995, ISBN 0-13-317729-7
  • Intel 64 and IA-32 Architectures Software Developer's Manuals [online]. K dispozici na <www.intel.com>.

Syllabus of lectures

  1. AMD/Intel x86-64 processor acrhitecture.
  2. Extensions and SIMD technologies of processors - MMX.
  3. Extensions and SIMD technologies of processors - SSE.
  4. Extensions and SIMD technologies of processors - AVX.
  5. MMX, SSE and AVX applications.
  6. Architecture and assembler of the ARM processors.
  7. NEON technology of the ARM processors.
  8. ARM programming - emulation, embedded devices.
  9. Protected mode of the IA-32 and x86-64 processors - registers, instructions and memory models.
  10. Protected mode of the IA-32 and x86-64 processors - basic data structures, memory management.
  11. Protected mode of the IA-32 and x86-64 processors - principles of the data and code protection.
  12. Protected mode of the IA-32 and x86-64 processors - task management.
  13. Optimizations of applications in assembler.

Syllabus of computer exercises

  1. Development and use of the DLL libraries.
  2. Win32 API - console application.
  3. Win32 API - window-based application.
  4. Win32 API - applications using OpenGL.
  5. Application of the MMX extension.
  6. Application of the SSE technology.
  7. Code optimization.

Syllabus - others, projects and individual work of students

  1. Individual project: development of a simple application in 32/64bit protected mode using Win32 API, MMX extension and/or SSE or AVX technology, OpenGL.

Progress assessment

  • Work in laboratory.
  • Evaluated project.


Work in laboratory and evaluated project are monitored and given points for. Missed labs caused by a valid proved reason (health issues or other valid reasons) will be compensated by an appropriate homework.

Schedule

DayTypeWeeksRoomStartEndCapacityLect.grpGroupsInfo
Tue lecture 1., 2., 3., 5., 6., 7., 8., 9., 10., 11., 12., 13. of lectures E105 16:0017:5064 2BIA 2BIB 3BIT xx Orság
Tue lecture 2024-02-27 E105 16:0017:5064 2BIA 2BIB 3BIT xx Goldmann
Tue comp.lab *) 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13. of lectures N203 16:0017:5020 2BIA 2BIB 3BIT xx Goldmann
Tue comp.lab 3., 5., 6., 8., 9., 11., 12., 13. of lectures N203 18:0019:5020 2BIA 2BIB 3BIT xx Goldmann
Thu comp.lab 3., 5., 6., 8., 9., 11., 12., 13. of lectures N203 12:0013:5020 2BIA 2BIB 3BIT xx Goldmann
Thu comp.lab 1., 2., 3., 5., 6., 8., 9., 11., 12., 13. of lectures N205 14:0015:5020 2BIA 2BIB 3BIT xx Goldmann
Fri exam 2024-05-03 D0206 10:0012:00 Zkouška 1
It is not possible to register this class in Studis. (Some exercises may be opened later if needed, but this is not guaranteed.)

Course inclusion in study plans

  • Programme BIT, 2nd year of study, Elective
  • Programme BIT (in English), 2nd year of study, Elective
  • Programme IT-BC-3, field BIT, 2nd year of study, Elective
Back to top