Этот мини-курс посвящен устройству динамических библиотек на низком уровне в современном 64-разрядном окружении. Будут рассмотрены следующие вопросы:
— Зачем нужен компоновщик и динамический загрузчик.
— Релокация.
— Структура ELF-файлов: секции, сегменты. Таблицы символов.
— Отличие статического и динамического связывания.
— Position Independent Code.
— Global Offset Table и Program Linkage Table.
— Как описывается интерфейс динамических библиотек.
— Процесс разрешения символов.
— Оптимизация динамических библиотек.
— Small, Medium, Large Code Models и как они изменяются в условиях Position Independent Code.
Будут использоваться языки С и ассемблера, желательно их базовое понимание. Для иллюстрации мы напишем несколько примеров библиотек на них.
Литература по теме:
Low-Level Programming: C, Assembly, and Program Execution on Intel® 64 Architecture
How to write shared libraries
Understanding x64 code models
Date and time | Class|Name | Venue|short | Materials |
---|---|---|---|
23 December 17:15–18:45 |
Лекция 1, Lecture | ПОМИ РАН | slides, video, other |
23 December 19:00–20:30 |
Лекция 2, Lecture | ПОМИ РАН | video |
24 December 11:15–12:45 |
Лекция 3, Lecture | ПОМИ РАН | video |
24 December 13:00–14:30 |
Лекция 4, Lecture | ПОМИ РАН | video |
24 December 15:30–17:00 |
Лекция 5, Lecture | ПОМИ РАН | video |