Вы здесь

Низкоуровневый взгляд на динамические библиотеки и модели кода

Курс
Предмет:

Этот мини-курс посвящен устройству динамических библиотек на низком уровне в современном 64-разрядном окружении. Будут рассмотрены следующие вопросы:

— Зачем нужен компоновщик и динамический загрузчик. 
— Релокация. 
— Структура ELF-файлов: секции, сегменты. Таблицы символов. 
— Отличие статического и динамического связывания. 
— Position Independent Code.
— Global Offset Table и Program Linkage Table. 
— Как описывается интерфейс динамических библиотек. 
— Процесс разрешения символов. 
— Оптимизация динамических библиотек. 
— Small, Medium, Large Code Models и как они изменяются в условиях Position Independent Code. 

Будут использоваться языки С и ассемблера, желательно их базовое понимание. Для иллюстрации мы напишем несколько примеров библиотек на них.

Литература по теме:

  • Zhirkov, I. Low-Level Programming: C, Assembly, and Program Execution on Intel® 64 Architecture
  • Drepper, U. How to write shared libraries
  • Bendersky, E. Understanding x64 code models