Скачать База Ассемблера (NASM Linux x86-64) [Stepik] [Виталий Богодухов]

Джокер

Администратор
Регистрация
1 Янв 2015
Сообщения
145.898
Реакции
78.179
Складчина: База Ассемблера (NASM Linux x86-64) [Stepik] [Виталий Богодухов]



Пакет курсов "База 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 руб.




СКАЧАТЬ СЛИВЫ КУРСОВ