История ассемблерных языков
Полный отказ от высокоуровневых языков нецелесообразен. Поэтому большинство компиляторов поддерживают встроенный ассемблер — механизм вставки ассемблерных инструкций непосредственно в код на 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
Microsoft x64 calling convention, shadow space, вывод в консоль и файлы через API вместо syscall.
Система команд (ISA) и синтаксис Intel/AT&T
ISA процессора, CISC и RISC, диалекты asm для x86 и сравнение Intel-синтаксиса с AT&T на примерах NASM и GAS.
Основы ассемблера
Основы ассемблера - синтаксис Intel/AT&T, базовые инструкции и принципы низкоуровневого программирования.
Архитектура ассемблерных программ
Архитектура ассемблерных программ - взаимодействие с ОС, вызовы библиотек и организация низкоуровневого кода.
Типы данных и регистры
Типизация, набор правил определения типа данных значений языка.
Управляющие конструкции и команды процессора
Управляющие конструкции и команды процессора в ассемблере - регистр команд, переходы и управление потоком исполнения.
Команды и подпрограммы
Команды и подпрограммы в ассемблере - передача параметров, соглашения вызовов и работа со стеком.
Процедуры и прерывания
Процедуры и прерывания в ассемблере - структура подпрограмм, вызовы, возвраты и работа с аппаратными сигналами.
Первая программа на ассемблере
Гайд по установке и настройке с написанием первой программы и её запуском.
Справочник по ассемблеру
Справочник-шпаргалка по ассемблеру — типы, синтаксис, стандартная библиотека, типовые паттерны. Не заменяет пошаговое обучение. Учебный курс — раздел.
Длинная целочисленная арифметика
Сложение, вычитание и сдвиги чисел шире регистра через ADC, SBB и массивы слов в little-endian.
SETcc, CMOV и ветвления без прыжков
Условная установка байта и условное перемещение в регистр — когда использовать вместо Jcc.
Ассемблер — о разделе
Язык ассемблера, программы-трансляторы (NASM, GAS), макроассемблер, дизассемблирование и маршрут от основ до x86-64.