Лекция 1. Вводная лекция. История вычислительной техники. Архитектура фон Неймана. Основные компоненты компьютера. Слайды
Лекция 2 (3 часа). Упрощенная схема компиляции Си-программы в окружении компилятор gcc, операционная система Linux, архитектура IA32. Архитектура IA32: основные регистры, форматы команд. Представление машинной команды, ассемблерная инструкция. Декодирование и дизассемблирование. Организация ассемблерной программы, секции кода и данных. Слайды
Лекция 3. Пример ассемблерной программы: пересылка данных, арифметические операции, регистр флагов. Передача управления. Пример ассемблерной программы: условные и безусловные переходы. Слайды
Лекция 4 (3 часа). Проблемы организации вызова функций. Аппаратная поддержка стека. Пример ассемблерной программы: отображение вызова функции языка Си в язык ассемблера. Слайды
Лекция 5. Отображение операторов разыменования указателя и взятия адреса из языка Си в язык ассемблера. Размещение различных типов переменных языка Си в памяти компьютера. Пример работы с указателями. Слайды
Лекция 6. Работа с указателями на примерах обратных задач. Одномерные массивы, расположение в памяти, доступ к элементам массивов. Адресная арифметика. Слайды
Лекция 7. Реализация арифметических операций над 64-разрядными целыми в архитектуре IA32. Условная передача данных: goto-форма представления ветвлений и циклов. Отображение операторов цикла языка Си в язык ассемблера. Слайды
Лекция 8. Организация цикла с помощью инструкции LOOP. Различные способы отображения оператора switch в язык ассемблера: последовательность if-else, таблица переходов, дерево выбора. Слайды
Лекция 9. Массивы: одномерные, многомерные, многоуровневые. Расположение в памяти, способы работы с отдельными элементами. Особенности работы компилятора с массивами: примеры простых оптимизаций: примеры машинно-независимой и машинно-зависимой оптимизации. Слайды
Лекция 10. Коллоквиум №1. Организация работы со структурами языка Си на уровне языка ассемблера. Доступ к полям. Выравнивание данных. Слайды
Лекция 11. Организация работы с объединениями языка Си на уровне языка ассемблера. Побитовые логические инструкции. Инструкции сдвига и вращения. Битовые поля структур. Слайды
Лекция 12.Соглашение о вызове функций cdecl. Распределение памяти во фрейме функции. Организация рекурсии. Слайды
Лекция 13. Возвращаемое значение в соглашении cdecl, возврат структур из функции в компиляторе gcc. Выравнивание фреймов в стеке. Организация вызова функций стандартной библиотеки языка Си из ассемблерного кода. Соглашения stdcall и fastcall. Слайды
Лекция 14. Ускорение вызова функций и возврата из них: реализация вызова функций без указателя фрейма. Функции с переменным числом параметров. Вызов функции по указателю. Ассемблерные вставки в Си-программах. Слайды
Лекция 15. Формат инструкций архитектуры IA32. Префиксы: модификаторы размера операнда и адреса, префиксы повтора. Реализация операций над строками.
Представление чисел с плавающей точкой. Стандарт IEEE 754. Слайды
Лекция 16. Стандарт IEEE 754 (продолжение). Операции над числами с плавающей точкой. Округление чисел. Сопроцессор FPU x87. Аппаратный стек регистров. Обратная польская запись. Числа с плавающей точкой в языке Си: типы, доступ к результатам сравнения чисел, передача в качестве параметров функции, возвращаемое значение. Слайды
Лекция 17. Организация аппаратного обеспечения компьютера. Логические вентили. Закон Мура. Закон Гроша. Слайды
Лекция 18. Коллоквиум №2. Устройство оперативной памяти. Статическая и динамическая память. Расслоение памяти. Слайды
Лекция 19. Ввод/вывод. Шины, их характеристики, примеры шин: фронтальная шина, PCI, USB, SATA … Устройство НЖМД: организация, емкость, временные характеристики доступа. Организация ввода/вывода через пространство портов и через память. Прямой доступ к памяти периферийных устройств. Твердотельные диски. Тенденции в развитии запоминающих устройств. Слайды
Лекция 20. Локальность в программах. Иерархическая организация памяти, кэширование. Кэш-память: способы организации. Кэш прямого отображения. N-канальный ассоциативный кэш. Метрики производительности кэша. Способы оценки производительности компьютеров и программ. Аппаратные средства измерения времени. Слайды
Лекция 21. Синтетический тест: оценка производительности памяти современного компьютера. Конвейерная обработка команд. Приостановка и опустошение конвейера. Суперскалярная архитектура. CISC и RISC архитектуры. ARM как пример RISC архитектуры. История развития архитектуры x86. Обратная совместимость процессоров. Многозадачная работа компьютера: требования к аппаратуре, работа с памятью в защищенном режиме. Страничная организация памяти. Режимы работы современного процессора архитектуры Intel64/AMD64. Слайды
Лекция 22. Компиляция и интерпретация. Система программирования языка Си. Программные инструменты, используемые при разработке Си-программ. Схема работы ассемблера. Статическая компоновка программы. Схема работы компоновщика: разрешение символов и перемещение кода. Типы объектных файлов (модулей). Формат ELF. Слайды
Лекция 23. Обработка компоновщиком нескольких символов с одинаковыми именами: сильные и слабые символы. Организация многомодульной программы, роль заголовочных файлов. Автоматизация сборки многомодульной программы: утилита make. Статические библиотеки. Компоновка со статическим библиотеками. Загрузка исполняемого файла в память. Слайды
Pingback: Слайды лекции №15 | Архитектура ЭВМ и язык ассемблера