База Ассемблера NASM Linux x86-64

8 участников

О чём курс

О программе

Пакет курсов «База NASM» представляет собой комплексную обучающую программу, посвящённую изучению языка ассемблера NASM в операционной системе Linux на базе 64-битной архитектуры x86-64. Обучение ориентировано на последовательное освоение низкоуровневой разработки: от базовых инструкций процессора и принципов работы памяти до продвинутой оптимизации вычислений и взаимодействия с современными операционными системами.

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

Состав пакета

В комплект включены три самостоятельных курса:

  • «Базовый ассемблер» знакомит слушателей с архитектурой Linux x86-64, основными регистрами и базовыми конструкциями языка. Разбираются модели данных и выполнения, арифметические и логические операции, управление потоком выполнения с помощью переходов и циклов, а также стек, вызовы функций и системные вызовы. В качестве закрепления материала предусмотрено создание учебных мини-проектов.
  • «Углублённый ассемблер» посвящён продвинутым концепциям разработки. В этой части рассматриваются инструменты исследования и отладки исполняемых файлов, механизмы взаимодействия с операционной системой и динамической памятью, организация многофайловой сборки проектов, интеграция ассемблерного кода с языками высокого уровня, а также тонкая настройка производительности под особенности микроархитектуры современных процессоров.
  • «SIMD» выступает специализированным расширением, направленным на освоение векторизации вычислений и ускорение работы с большими массивами данных. В модуле изучаются векторные регистры, инструкции расширений SSE, AVX и AVX2, работа с упакованными целыми числами и числами с плавающей точкой, перестановки данных, а также специфика эффективного применения векторных вычислений.

Чему вы научитесь

Слушатели курса осваивают следующие практические навыки:

  • написание собственных программ на ассемблере с применением модульного и функционального подходов;
  • эффективное управление оперативной памятью, работа со структурами, массивами и системным стеком;
  • проведение комплексной отладки программ с использованием отладчика GDB, утилит strace и objdump;
  • реализация прямого взаимодействия с ядром операционной системы через системные вызовы;
  • связывание низкоуровневого ассемблерного кода с проектами на C, C++, Python и Java через механизмы FFI;
  • низкоуровневая оптимизация кода с учётом работы процессорного кэша, конвейера инструкций и предсказания переходов;
  • применение векторных инструкций для создания высокопроизводительного кода, рассчитанного на работу с большими данными.

Для кого предназначен курс

Программа разработана для всех желающих освоить ассемблер и получить практический опыт низкоуровневого программирования. Специальных предварительных знаний от слушателей не требуется, однако базовое знание языков C или C++ будет плюсом при изучении взаимодействия компонентов и соглашений вызовов.

Об авторе

Автор программы — Виталий Богодухов (Vitaliy Bogodukhov). Специалист окончил обучение по направлению «Бэкенд разработчик C++» и работает по специальности с 2020 года. В профессиональной деятельности автор занимается оптимизацией критически важных участков систем, осуществляя перенос программных решений с языков Python, Go и других на C++, NASM и Fortran для ускорения вычислений.

Программа обучения

  1. Ассемблер (NASM Linux x86-64) — Базовый уровень
  • Как все работает
    • Информация по прохождению
    • Запуск на Linux
    • Этапы работы программы
    • Модель данных
    • Модель выполнения
  • Базовый уровень
    • Копирование с MOV
    • Арифметика
    • Флаги процессора
    • Сравнение с CMP
    • Безусловный переход с JMP
    • Условные переходы
    • Циклы
    • Логические операции
    • Сдвиги
  • Работа с данными и памятью
    • Память
    • Переменные
    • Массивы и адресация
    • Структуры
    • Получение адреса с LEA
    • Строки
    • Endianness
    • Введение в стек
  • Функциональное программирование
    • Переход + возврат
    • Что происходит при вызове
    • Стек вызовов
    • Параметры
    • Возврат значения. Часть 1
    • Локальные переменные
    • Возврат значения. Часть 2
    • Сохранение регистров
  • Взаимодействие с системой
    • Что такое syscall
    • SYSCALL
    • Ввод / вывод
  • Препроцессор
    • Константы
    • Подключение файлов
    • Макросы
    • Условные конструкции
  • Итоги
    • Реализация алгоритмов
    • Мини-проект "Калькулятор"
    • Мини-проект "Конвертер чисел"
    • Мини-проект "Сортировщик файлов"
    • Список пройденного
    • Что дальше?
  1. Ассемблер (NASM Linux x86-64) — Углублённый уровень
  • Отладка и инструменты
    • GDB для ассемблера: запуск, пошаговое выполнение
    • Просмотр регистров, памяти и стека в GDB
    • Точки останова и watchpoints
    • objdump: анатомия бинарного файла
    • strace: наблюдение за системными вызовами
    • Шпаргалки по отладке
  • Системные вызовы и работа с ОС
    • Работа с файлами
    • Работа с каталогами
    • Динамическая память
    • Аргументы командной строки
    • Коды возврата и обработка ошибок
  • Взаимодействие с C и другими языками
    • Вызов функций стандартной библиотеки C из ассемблера
    • Передача структур и массивов через ABI
    • Написание функций на ассемблере для вызова из C и C++
    • Inline assembly в GCC и Clang
    • Создание статических и динамических библиотек
    • FFI с Python через ctypes
    • FFI с Java через JNA и JNI
  • Организация проектов
    • Многофайловая сборка
    • Основы Makefile
    • Makefile: шаблоны, автоматические переменные и функции
    • Makefile: многорежимная сборка
    • Линковка с внешними библиотеками
    • Сложные макросы и условная компиляция
    • Автоматическая генерация кода препроцессором
  • Память и данные
    • Виртуальная память
    • Карта памяти процесса
    • Выравнивание структур и padding
    • Pointer arithmetic в больших массивах
    • Отображение файлов в память
    • Написание простого аллокатора памяти
  • Оптимизация и производительность
    • Конвейер процессора и суперскалярное выполнение
    • Как работает кэш: L1, L2, L3 и cache line
    • Выравнивание данных под кэш
    • Минимизация обращений к памяти
    • Оптимизация циклов: развёртка и предвычисления
    • Предсказание переходов
    • Устранение ложных зависимостей между инструкциями
    • Измерение и профилирование: rdtsc и perf
  • Итоги
    • Практическая задача Ⅰ
    • Практическая задача ⅠⅠ
    • Практическая задача ⅠⅠⅠ
    • Список пройденного
    • Что дальше?
  1. SIMD (Ассемблер NASM Linux x86-64)
  • Основы
    • Что такое SIMD
    • Регистры xmm и ymm
    • Выравнивание данных и кэш
    • Семейства расширений
    • Сборка и запуск
  • Числа с плавающей точкой
    • Загрузка и сохранение
    • Скалярная арифметика
    • Упакованная арифметика
    • Горизонтальные операции
    • Сравнение
    • Преобразование типов
    • Математические инструкции
    • Управление точностью
  • Целые числа
    • Загрузка, сохранение и арифметика
    • Умножение
    • Сдвиги
    • Логические операции
    • Сравнение и маскирование
    • Сбор и разбор данных
  • Перестановки и компоновка
    • Shuffle
    • Unpack
    • Blend
  • Переход на AVX и AVX2
    • Трёхоперандный синтаксис
    • 256-битные операции
    • Broadcast
    • Смешивании SSE и AVX
    • Сохранение и восстановление регистров
  • Итоги
    • Когда SIMD не помогает
    • Мини-проект
    • Список пройденного
Складчина создана 11 июля 2026 г.

Теги курса

Инструменты

Другие материалы автора 3

ВБ Виталий Богодухов Все материалы
594 ₽ 3 590 ₽