Темы итогового экзамена 2017

Шестнадцатеричная система счисления. Знаковые числа, дополнительный код. Арифметические операции. Флаги: CF, SF, OF и ZF.

Архитектура IA-32: основные регистры, форматы команд. Порядок байт в памяти. Машинные типы данных: байт, слово, двойное слово, четверное слово. Аппаратный стек.

Инструкции в IA-32/nasm: пересылки, в том числе условные, арифметические, логические, битовые, сдвиги и вращения, передачи управления.

Отображение операторов разыменование указателя и взятия адреса из языка Си в язык ассемблера. Размещение различных типов переменных языка Си в памяти компьютера. Работа с указателями. Адресная арифметика.

Массивы: одномерные, многомерные, многоуровневые. Расположение в памяти, способы работы с отдельными элементами. Преобразование индексных выражений в адресную арифметику.

Реализация классов памяти языка Си на уровне языка ассемблера, размещение переменных: глобальных, статических, автоматических. Приведение типов данных. Работа со знаковыми и беззнаковыми числами.

Передача управления. Условные и безусловные переходы. Связь регистра EFLAGS и мнемонических кодов условий. Реализация управляющих операторов языка Си на языке ассемблера.

Организация работы со структурами и объединениями языка Си на уровне языка ассемблера. Доступ к полям. Выравнивание данных в ОС Windows и Linux. Размер агрегатных типов данных.

Соглашение о вызове функций cdecl. Распределение памяти во фрейме функции. Возвращаемое значение в соглашении cdecl. Функции с переменным числом параметров.

Соглашение вызова stdcall, fastcall, реализация вызова функции без использования указателя фрейма, гибридное соглашение вызова.

Выравнивание фреймов в стеке. Организация вызова функций стандартной библиотеки языка Си из ассемблерного кода.

Управление динамической памятью. Пропускная способность и эффективность расходования. Внутренняя и внешняя фрагментация. Управление свободными блоками: неявный список.

Представление чисел с плавающей точкой. Стандарт IEEE 754. Свойства чисел с плавающей точкой. Операции над числами с плавающей точкой. Округление чисел.

Сопроцессор FPU x87. Аппаратный стек регистров. Организация работы с числами с плавающей точкой в языке Си: пересылка данных, основные арифметические операции.

Устройство современного компьютера, запоминающие устройства: организация, емкость. Соотношение временных характеристик доступа на разных уровнях иерархической памяти компьютера.

Кэш-память процессора, способы ее организации: кэш прямого отображения, N-канальный множественно-ассоциативный кэш, полностью ассоциативный кэш.

Организация виртуальной памяти, страничная трансляция адреса. Буфер быстрого преобразования адреса (TLB).

Многомодульные программы. Глобальные, локальные, внешние имена. Сильные и слабые символы, COMMON-символы .

Объектные файлы формата ELF. Статическая компоновка программы: разрешение символов, перемещение кода, модификация символов и ссылок.

Загрузка исполняемого файла в память. Динамическая компоновка, разделяемые библиотеки. Позиционно независимый код. Глобальная таблица смещений. Ленивое связывание в динамической компоновке. Динамическая загрузка.