Чему вы научитесь
- Отлаживать ассемблерные программы в GDB: точки останова, watchpoints, просмотр регистров и памяти
- Анализировать бинарные файлы через objdump и отслеживать системные вызовы через strace
- Работать с файлами, каталогами и динамической памятью через системные вызовы Linux
- Обрабатывать аргументы командной строки и коды возврата
- Вызывать функции стандартной библиотеки C из ассемблера и писать функции, вызываемые из C
- Использовать inline assembly в GCC и Clang
- Создавать статические и динамические библиотеки, подключать их к другим языкам через FFI (Python, Java)
- Организовывать многофайловую сборку и писать Makefile — от простого до многорежимного
- Понимать виртуальную память, карту памяти процесса, выравнивание структур
- Писать простой аллокатор памяти и работать с отображением файлов в память
- Оптимизировать код с учётом конвейера процессора, кэша, предсказания переходов
О курсе
Второй курс линейки об ассемблере x86-64: отладка в GDB, взаимодействие с операционной системой, вызов функций C и создание библиотек, организация многофайловых проектов и оптимизация кода под конвейер и кэш процессора.
Для кого этот курс
Тем, кто прошёл первый курс линейки («Основы») и хочет перейти от учебных примеров к реальной разработке
Разработчикам, которые пишут на C/C++ и хотят понимать, как их код взаимодействует с ассемблерными модулями через ABI и FFI
Тем, кто хочет писать производительный низкоуровневый код и разбираться в том, как устроены кэш, конвейер и предсказание переходов
Всем, кто планирует заниматься системным программированием или reverse engineering и должен уверенно пользоваться GDB, objdump и strace
Начальные требования
- Уверенное владение материалом курса «Ассемблер (NASM Linux x86-64) — Основы»: синтаксис, память, функции, стек вызовов, системные вызовы, препроцессор
- Базовое знакомство с языком C приветствуется, но не обязательно — необходимый минимум объясняется по ходу курса
- Установленные GDB, objdump, strace, gcc — используются на протяжении всего курса
Преподаватели курса
Как проходит обучение
Курс сохраняет формат первого: короткая теория и практика в каждом уроке. Разница в том, что здесь заметно больше самостоятельной работы с инструментами — GDB, Makefile, компоновщиком — то есть с тем, с чем реально сталкиваешься при разработке за пределами учебных примеров. Темы расположены так, чтобы сначала дать инструменты для диагностики (отладка), затем — новые возможности (C-интеграция, библиотеки), и только потом — оптимизацию, которая требует понимания всего, что было раньше.
Сертификат
Успешно завершив курс, вы получите сертификат от платформы Stepik. Уже 10 учеников получили сертификат.
Что вы получите
- Уверенное владение GDB, objdump и strace для отладки и анализа ассемблерных и C-программ
- Навык интеграции ассемблерного кода с C, Python и Java через ABI и FFI
- Умение организовывать и собирать многофайловые проекты с помощью Makefile
- Понимание устройства памяти процесса и практику написания собственного аллокатора
- Навык оптимизации кода с учётом реального поведения процессора — кэша, конвейера, предсказания переходов
- Сертификат о прохождении курса