Глава 1. Введение в ассемблер Intel x86-64
Архитектура Intel x86-64
Представление данных, биты и байты
Регистры процессора
Ассемблер MASM. Установка и начало работы
Первая программа на MASM
Глава 2. Основы ассемблера MASM для Intel x86-64
Определение данных и их типы
Инструкция mov. Копирование данных
Сложение и вычитание. add и sub
Переходы. Инструкция jmp
Флаги состояния и условные переходы
Сравнение. Инструкция CMP
Инструкции условного копирования
Логические операции
Сдвиг и вращение
Умножение. mul и imul
Деление. Инструкции div и idiv
Установка битов по условию. setc
Манипуляции битами. BMI
Константы
Глава 3. Работа с данными и памятью
Преобразование данных
Символы
Режимы адресации. Косвенная адресация
Выравнивание
Стек
Указатели
Строки
Сортировка массива
Многомерные массивы
xlat и поиск в таблицах
Структуры
Объединения union
Глава 4. Базовые конструкции
Условные конструкции
Булевые конструкции
Имитация конструкции switch..case
Машина состояний
Циклы
Глава 5. Арифметика больших чисел
Сложение и вычитание больших чисел
Сравнение больших чисел
Умножение больших чисел
Деление больших чисел
Поразрядные операции с большими числами
Операции сдвига больших чисел
Глава 6. Процедуры
Определение и вызов процедур
Сохранение регистров и переменных при вызове процедур
Параметры
Результат процедуры
Фрейм стека и локальные переменные
Указатель на процедуру
Глава 7. Организация программы
Вставка кода и директива include
Разбиение программы на модули и подключение внешних модулей
Библиотеки
Глава 8. FPU, SSE и числа с плавающей точкой
Регистры FPU
Числа с плавающей точкой
Загрузка данных и преобразование чисел в FPU
Сложение чисел с плавающей точкой в FPU
Вычитание чисел с плавающей точкой в FPU
Умножение чисел с плавающей точкой в FPU
Деление чисел с плавающей точкой в FPU
Дополнительные математические инструкции FPU
Сравнение чисел с плавающей точкой в FPU
Расширения SSE для чисел с плавающей точкой
Арифметика чисел с плавающей точкой в SSE
Сравнение чисел с плавающей точкой в SSE
Десятичная арифметика и двоично-десятичный формат BCD
Глава 9. SIMD
Расширения SSE и AVX/AVX2
Копирование данных с помощью инструкций SIMD
Копирование чисел с плавающей точкой
Переупорядочивание данных
Логические операции SSE/AVX
Операции сдвига SSE/AVX
Сложение с помощью инструкций SSE/AVX
Вычитание с помощью инструкций SSE/AVX
Умножение с помощью инструкций SSE/AVX
Математические инструкции SSE/AVX
Сравнение целых чисел в SSE/AVX
Преобразования целых чисел в SSE/AVX
Арифметические операции с плавающей точкой в SSE/AVX
Сравнение чисел с плавающей точкой в SIMD
Преобразование чисел с плавающей точкой в целые числа и обратно
Загрузка в регистры константных значений
Сохранение состояния регистров SSE/AVX
Глава 10. Строки
Операции со строками
Сравнение строк
Поиск в строке
Сохранение и получение элементов строк
Глава 11. Макросы
Определение макросов
Параметры макроса
Метки в макросах
Условная компиляция и циклы
Генерация таблиц для поиска
Глава 12. Взаимодействие с кодом на C/C++
Первая программа на MASM/C
Передача параметров из ассемблера в функцию C/C++
Возвращение результата из процедуры ассемблера в код на C/C++
Практически пример. Обработка консольного ввода
Глава 13. Взаимодействие с WinAPI
Запись в файл и вывод на консоль
Считывание файла и ввод с консоли
Практический пример. Обработка ввода
Создание, открытие и закрытие файла
Запись в текстовый файл
Чтение текстового файла
Графическое приложение. Окно сообщения
Глава 14. Исследование и дизассемблирование файлов
Формат COFF-файла
Исследование файла с помощью dumpbin
Исследование файла с помощью objdump