Чему вы научитесь
- Понимать архитектуру процессоров ARM64 (AArch64) и логику работы с регистрами общего и специального назначения.
- Читать, писать и отлаживать код на ассемблере GNU (GAS) с нуля.
- Управлять оперативной памятью: работать со стеком, кадрами функций и выравниванием по стандартам ARM64 ABI.
- Оптимизировать алгоритмы под конвейер процессора, избавляясь от ветвлений с помощью инструкций условного выбора (CSEL/CSINC).
- Ускорять вычисления в разы, используя параллельную обработку данных SIMD/NEON и математику с плавающей точкой.
- Интегрировать ассемблерный код в проекты на Си/C++ с помощью механизма Inline Assembly.
- Читать и анализировать чужой скомпилированный код (дизассемблированный вывод) в задачах реверс-инжиниринга.
- Понимать механику бинарных уязвимостей (переполнение буфера) и современные методы низкоуровневой защиты программ.
О курсе
Архитектура ARM64 сегодня окружает нас повсюду: она управляет смартфонами, передовыми серверами, IoT-устройствами и компьютерами на базе Apple Silicon. Понимание того, как этот процессор работает на самом низком уровне, отделяет обычного программиста от высококлассного инженера.
Наш курс спроектирован по принципу «от теории к практике». Мы не просто заставим вас учить синтаксис команд — мы разберем сквозную связь между языком высокого уровня (Си) и машинным кодом процессора. Каждая тема подкреплена наглядными сравнениями «C vs ASM», практическими разборами работы компилятора и проверочными тестами, которые помогут закрепить понимание архитектуры.
Мы пройдем путь от битовых операций и арифметики до сложных тем: вызова вложенных функций, работы векторного сопроцессора NEON, написания атомарного кода для многопоточных сред и синтаксиса встроенного ассемблера GCC. Финальный модуль погрузит вас в прикладные задачи реверс-инжиниринга и информационной безопасности.
Для кого этот курс
Начальные требования
-
Базовые знания языка программирования Си или C++ (понимание того, что такое переменные, циклы, функции, массивы и указатели).
-
Минимальное представление о двоичной и шестнадцатеричной системах счисления (как устроены биты и байты).
-
Навыки работы с командной строкой (терминалом Linux) будут плюсом, но все необходимые инструменты для компиляции и сборки мы разберем в вводном модуле.