Чему вы научитесь
- Понимать архитектуру процессоров ARM64 (AArch64) и логику работы с регистрами общего и специального назначения.
- Читать, писать и отлаживать код на ассемблере GNU (GAS) с нуля.
- Управлять оперативной памятью: работать со стеком, кадрами функций и выравниванием по стандартам ARM64 ABI.
- Оптимизировать алгоритмы под конвейер процессора, избавляясь от ветвлений с помощью инструкций условного выбора (CSEL/CSINC).
- Ускорять вычисления в разы, используя параллельную обработку данных SIMD/NEON и математику с плавающей точкой.
- Интегрировать ассемблерный код в проекты на Си/C++ с помощью механизма Inline Assembly.
- Читать и анализировать чужой скомпилированный код (дизассемблированный вывод) в задачах реверс-инжиниринга.
- Понимать механику бинарных уязвимостей (переполнение буфера) и современные методы низкоуровневой защиты программ.
О курсе
Освойте низкоуровневую архитектуру ARM64 — от структуры регистров и работы со стеком до векторных вычислений NEON, Inline Assembly и основ реверс-инжиниринга. Научитесь понимать процессор на уровне железа и писать максимально быстрый, безопасный и оптимизированный код.
Для кого этот курс
Студенты профильных IT-специальностей, изучающие архитектуру ЭВМ, системное программирование и операционные системы.
Разработчики на C/C++ (Middle/Senior), желающие глубже понять, во что компилятор превращает их код, и научиться выжимать максимум производительности из железа.
Embedded-разработчики (встраиваемые системы), работающие с микроконтроллерами и одноплатными компьютерами на архитектуре ARM.
Специалисты по кибербезопасности и реверс-инженеры, которым необходим прочный фундамент для анализа бинарных файлов и поиска уязвимостей в ARM-среде.
Энтузиасты низкоуровневого программирования, желающие заглянуть «под капот» современных процессоров.
Начальные требования
-
Базовые знания языка программирования Си или C++ (понимание того, что такое переменные, циклы, функции, массивы и указатели).
-
Минимальное представление о двоичной и шестнадцатеричной системах счисления (как устроены биты и байты).
-
Навыки работы с командной строкой (терминалом Linux) будут плюсом, но все необходимые инструменты для компиляции и сборки мы разберем в вводном модуле.