SETcc, CMOV и ветвления без прыжков
Условная установка байта и условное перемещение в регистр — когда использовать вместо Jcc.
Условная установка байта и условное перемещение в регистр — когда использовать вместо Jcc.
Microsoft x64 calling convention, shadow space, вывод в консоль и файлы через API вместо syscall.
Выбор между async и task, работа с Task из .NET, MailboxProcessor для изолированного состояния и типичные ошибки.
Вызов ассемблерных функций из C и наоборот — System V AMD64 ABI, выравнивание стека, сборка.
Временные характеристики параллельных алгоритмов — информационный граф, ранние и поздние сроки, критический путь, минимальное число процессоров.
Граф алгоритма — построение, свойства, матрица следования, выявление логически несовместимых операторов и параллелизма.
Сложение, вычитание и сдвиги чисел шире регистра через ADC, SBB и массивы слов в little-endian.
Оценка производительности параллельных компьютеров — закон Амдала, закон Густафсона-Барсиса, эффективность, масштабируемость, конвейер.
Построение параллельных алгоритмов — инженерный подход, классификация параллелизма, этапы разработки, декомпозиция данных, рекомендации.
%macro, %define и %if в NASM — шаблоны инструкций без дублирования исходного текста.
Модели параллельных вычислений — PRAM, message passing, SPMD; сети передачи данных между процессорами; диаграммы расписания.
Разделение программы на .asm-файлы, global и extern, сборка объектников и линковка в ELF.
Классы, структуры, интерфейсы и перечисления в F# — минимум объектной модели для библиотек и общих solution с C#.
Параллельные алгоритмы умножения матриц — последовательная база, блочная декомпозиция, Cannon, SUMMA, практические рекомендации.
Практическое параллельное программирование — OpenMP, MPI, типовые паттерны, профилирование и отладка параллельного кода.
REP, MOVS, SCAS, STOS, флаг DF и доступ к данным по индексу через таблицу.
Секции ELF, символы, objdump и сопоставление дизассемблирования с исходным NASM-кодом.