Cognitive: Understanding of the architecture and the programming model of 8-bit, 16-bit, 32-bit, and 64-bit processors. Instruction Set Architecture (ISA) of advanced Intel processors (80386, 80486, and Pentium). Understanding of real-mode, protected mode, and flat memory architecture.
Skills: Assembly programming following the principles of modular programming. Σύνδεση C και Assembly. The interface of C and Assembly programming languages MASM and NASM assemblers Interface with the Operating System in DOS, Win32, and Linux 7. Using the Single-Instruction-Multiple-Data (SIMD) instructions at C and Assembly levels (SSE, SSE2, AVX, AVX-512).
Course Content (Syllabus)
The evolution of Intel processors. Micro-architecture of 8085 and 8086 processors. Structure of external and internal busses, memory and interconnections. Assembly instructions, machine cycles, and timing diagrams. Programming models. Assembly language (variable declarations, transfer instructions, memory instructions, arithmetic/logic instructions, floating point instructions, control instructions, lookup tables, stack management, and subroutines). The MASM assembler (directives, segments, macros). Modular programming and how to deal with strings, arrays, and pointers at assembly level. Interface and API with the Operating System (file management, I/O) in DOS, Win32, and Linux. Introduction of 80386, 80486 and Pentium (x86). Real-mode and protected-mode and memory models (flat memory model). Subroutine calls in 80386 (call, ret, stack frames). SIMD instructions and registers (Single Instruction Multiple Data) and code examples using the MMX, SEE, and AVX extensions. SSE και AVX Intrisics. The course contains projects related to accelerating specific applications written in Assembly x86 language and in mixed C/C++ and x86 Assembly code.