База Ассемблера NASM Linux x86-64
О чём курс
Пакет курсов "База NASM" познакомит Вас со всем необходимым для начала работы с языком ассемблера NASM и позволит развиваться в уже более специфичном направлении. Чему вы научитесь: Писать собственные программы на Ассемблере Эффективно работать с данными и памятью Оптимизировать код Писать функциональные и модульные программы Отлаживать программы Писать высокопроизводительный код Пакет курсов включает в себя следующее: Базовый ассемблер - в нем Вы познакомитесь с основными регистрами и конструкциями, начнете писать свои первые простые программы. Так же будет много практики, теории и примеров. Углублённый ассемблер — здесь Вы узнаете о более продвинутых концепциях, таких как работа с памятью на низком уровне, оптимизация кода, использование макросов и подпрограмм, а также о взаимодействии с аппаратными компонентами. Курс включает практические задания, где Вы будете писать более сложные программы, отлаживать их и анализировать эффективность работы кода. SIMD - это дополнение, которое поможет Вам писать выскопроизводительные и оптимизированные программы, которые могут работать на больших данных. Для кого эта программа и начальные требования: Для всех желающих понять ассемблер и просто получить интересный опыт. Никаких особых знаний не потребуется, но будет плюсом знание С/С++. Что вы получаете: Интересный опыт Навык написания программ на асссемблере В комплект входят 3 курса. Программа: 1. Ассемблер (NASM Linux x86-64) — Базовый уровень Как все работает Информация по прохождению Запуск на Linux Этапы работы программы Модель данных Модель выполнения Базовый уровень Копирование с MOV Арифметика Флаги процессора Сравнение с CMP Безусловный переход с JMP Условные переходы Циклы Логические операции Сдвиги Работа с данными и памятью Память Переменные Массивы и адресация Структуры Получение адреса с LEA Строки Endianness Введение в стек Функциональное программирование Переход + возврат Что происходит при вызове Стек вызовов Параметры Возврат значения. Часть 1 Локальные переменные Возврат значения. Часть 2 Сохранение регистров Взаимодействие с системой Что такое syscall SYSCALL Ввод / вывод Препроцессор Константы Подключение файлов Макросы Условные конструкции Итоги Реализация алгоритмов Мини-проект "Калькулятор" Мини-проект "Конвертер чисел" Мини-проект "Сортировщик файлов" Список пройденного Что дальше? 2. Ассемблер (NASM Linux x86-64) — Углублённый уровень Отладка и инструменты GDB для ассемблера: запуск, пошаговое выполнение Просмотр регистров, памяти и стека в GDB Точки останова и watchpoints objdump: анатомия бинарного файла strace: наблюдение за системными вызовами Шпаргалки по отладке Системные вызовы и работа с ОС Работа с файлами Работа с каталогами Динамическая память Аргументы командной строки Коды возврата и обработка ошибок Взаимодействие с C и другими языками Вызов функций стандартной библиотеки C из ассемблера Передача структур и массивов через ABI Написание функций на ассемблере для вызова из C и C++ Inline assembly в GCC и Clang Создание статических и динамических библиотек FFI с Python через ctypes FFI с Java через JNA и JNI Организация проектов Многофайловая сборка Основы Makefile Makefile: шаблоны, автоматические переменные и функции Makefile: многорежимная сборка Линковка с внешними библиотеками Сложные макросы и условная компиляция Автоматическая генерация кода препроцессором Память и данные Виртуальная память Карта памяти процесса Выравнивание структур и padding Pointer arithmetic в больших массивах Отображение файлов в память Написание простого аллокатора памяти Оптимизация и производительность Конвейер процессора и суперскалярное выполнение Как работает кэш: L1, L2, L3 и cache line Выравнивание данных под кэш Минимизация обращений к памяти Оптимизация циклов: развёртка и предвычисления Предсказание переходов Устранение ложных зависимостей между инструкциями Измерение и профилирование: rdtsc и perf Итоги Практическая задача Ⅰ Практическая задача ⅠⅠ Практическая задача ⅠⅠⅠ Список пройденного Что дальше? 3. SIMD (Ассемблер NASM Linux x86-64) Основы Что такое SIMD Регистры xmm и ymm Выравнивание данных и кэш Семейства расширений Сборка и запуск Числа с плавающей точкой Загрузка и сохранение Скалярная арифметика Упакованная арифметика Горизонтальные операции Сравнение Преобразование типов Математические инструкции Управление точностью Целые числа Загрузка, сохранение и арифметика Умножение Сдвиги Логические операции Сравнение и маскирование Сбор и разбор данных Перестановки и компоновка Shuffle Unpack Blend Переход на AVX и AVX2 Трёхоперандный синтаксис 256-битные операции Broadcast Смешивании SSE и AVX Сохранение и восстановление регистров Итоги Когда SIMD не помогает Мини-проект Список пройденного Автор Виталий Богодухов (Vitaliy Bogodukhov) Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает. — Rick Cook Закончил обучение по направлению "Бэкенд разработчик С++" и успешно работаю c 2020 года. В данный момент занимаюсь переносом программ с Python, Go и других языков на C++, NASM и Fortran для оптимизации и ускорения расчетов в критически важных местах. Цена 3590 руб. Скрытая ссылка
Программа обучения
Программа курса пока не добавлена.
Теги курса
Другие материалы автора 3
ВБ Виталий Богодухов Все материалыОтзывов пока нет. Будьте первым!
Этот курс сейчас в процессе организации складчины. Нажмите кнопку «Записаться» и ожидайте старта — вам придёт уведомление. Когда складчина стартует, в карточке курса будет указан актуальный взнос. Текущая цена пока в процессе формирования и может отличаться от финальной.
Да, мы стремимся, чтобы финальный взнос был не больше ≈10% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.