История ассемблерных языков
Полный отказ от высокоуровневых языков нецелесообразен. Поэтому большинство компиляторов поддерживают встроенный ассемблер — механизм вставки ассемблерных инструкций непосредственно в код на C/C++.
Макросы и условная сборка
%macro, %define и %if в NASM — шаблоны инструкций без дублирования исходного текста.
Несколько модулей и линковка
Разделение программы на .asm-файлы, global и extern, сборка объектников и линковка в ELF.
Взаимодействие с C и C++
Вызов ассемблерных функций из C и наоборот — System V AMD64 ABI, выравнивание стека, сборка.
Чтение исполняемого файла и листинга
Секции ELF, символы, objdump и сопоставление дизассемблирования с исходным NASM-кодом.
Строковые инструкции и таблицы поиска
REP, MOVS, SCAS, STOS, флаг DF и доступ к данным по индексу через таблицу.
Числа с плавающей точкой и SIMD
SSE2 для float и double, регистры XMM, выравнивание; кратко про стек x87 и AVX.
Windows x64, WinAPI и отличия от Linux
Особенности разработки под Windows x64 с разбором соглашения вызовов Microsoft, теневой области стека, WinAPI-функций и механизмов взаимодействия с файловой системой.
Система команд (ISA) и синтаксис Intel/AT&T
ISA процессора, CISC и RISC, диалекты asm для x86 и сравнение Intel-синтаксиса с AT&T на примерах NASM и GAS.
Основы ассемблера
Основы ассемблера - синтаксис Intel/AT&T, базовые инструкции и принципы низкоуровневого программирования.
Архитектура ассемблерных программ
Организация низкоуровневого кода на ассемблере, взаимодействие с операционной системой, вызовы системных библиотек и управление стеком вызовов.
Типы данных и регистры
Типизация, набор правил определения типа данных значений языка.
Управляющие конструкции и команды процессора
Управляющие конструкции и команды процессора в ассемблере - регистр команд, переходы и управление потоком исполнения.
Команды и подпрограммы
Команды и подпрограммы в ассемблере - передача параметров, соглашения вызовов и работа со стеком.
Процедуры и прерывания
Процедуры и прерывания в ассемблере - структура подпрограмм, вызовы, возвраты и работа с аппаратными сигналами.
Первая программа на ассемблере
Гайд по установке и настройке с написанием первой программы и её запуском.
Справочник по ассемблеру
Справочник-шпаргалка по ассемблеру — типы, синтаксис, стандартная библиотека, типовые паттерны. Не заменяет пошаговое обучение. Учебный курс — раздел.
Длинная целочисленная арифметика
Сложение, вычитание и сдвиги чисел шире регистра через ADC, SBB и массивы слов в little-endian.
SETcc, CMOV и ветвления без прыжков
Реализация условных вычислений через инструкции SETcc и CMOV с оптимизацией конвейера команд и устранением зависимостей от переходов в ассемблере.
Ассемблер — о разделе
Язык ассемблера, программы-трансляторы (NASM, GAS), макроассемблер, дизассемблирование и маршрут от основ до x86-64.