Складчик
- #1
[Stepik] База Ассемблера. NASM Linux x86-64 (Виталий Богодухов)
- Ссылка на картинку
Пакет курсов "База NASM" познакомит Вас со всем необходимым для начала работы с языком ассемблера NASM и позволит развиваться в уже более специфичном направлении.
Чему вы научитесь:
Программа:
1. Ассемблер (NASM Linux x86-64) — Базовый уровень
Как все работает
Отладка и инструменты
Основы
Чему вы научитесь:
- Писать собственные программы на Ассемблере
- Эффективно работать с данными и памятью
- Оптимизировать код
- Писать функциональные и модульные программы
- Отлаживать программы
- Писать высокопроизводительный код
- Базовый ассемблер - в нем Вы познакомитесь с основными регистрами и конструкциями, начнете писать свои первые простые программы. Так же будет много практики, теории и примеров.
- Углублённый ассемблер — здесь Вы узнаете о более продвинутых концепциях, таких как работа с памятью на низком уровне, оптимизация кода, использование макросов и подпрограмм, а также о взаимодействии с аппаратными компонентами. Курс включает практические задания, где Вы будете писать более сложные программы, отлаживать их и анализировать эффективность работы кода.
- SIMD - это дополнение, которое поможет Вам писать выскопроизводительные и оптимизированные программы, которые могут работать на больших данных.
- Для всех желающих понять ассемблер и просто получить интересный опыт.
- Никаких особых знаний не потребуется, но будет плюсом знание С/С++.
- Интересный опыт
- Навык написания программ на асссемблере
Программа:
1. Ассемблер (NASM Linux x86-64) — Базовый уровень
Как все работает
- Информация по прохождению
- Запуск на Linux
- Этапы работы программы
- Модель данных
- Модель выполнения
- Копирование с MOV
- Арифметика
- Флаги процессора
- Сравнение с CMP
- Безусловный переход с JMP
- Условные переходы
- Циклы
- Логические операции
- Сдвиги
- Память
- Переменные
- Массивы и адресация
- Структуры
- Получение адреса с LEA
- Строки
- Endianness
- Введение в стек
- Переход + возврат
- Что происходит при вызове
- Стек вызовов
- Параметры
- Возврат значения. Часть 1
- Локальные переменные
- Возврат значения. Часть 2
- Сохранение регистров
- Что такое syscall
- SYSCALL
- Ввод / вывод
- Константы
- Подключение файлов
- Макросы
- Условные конструкции
- Реализация алгоритмов
- Мини-проект "Калькулятор"
- Мини-проект "Конвертер чисел"
- Мини-проект "Сортировщик файлов"
- Список пройденного
- Что дальше?
Отладка и инструменты
- GDB для ассемблера: запуск, пошаговое выполнение
- Просмотр регистров, памяти и стека в GDB
- Точки останова и watchpoints
- objdump: анатомия бинарного файла
- strace: наблюдение за системными вызовами
- Шпаргалки по отладке
- Работа с файлами
- Работа с каталогами
- Динамическая память
- Аргументы командной строки
- Коды возврата и обработка ошибок
- Вызов функций стандартной библиотеки 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
- Практическая задача Ⅰ
- Практическая задача ⅠⅠ
- Практическая задача ⅠⅠⅠ
- Список пройденного
- Что дальше?
Основы
- Что такое SIMD
- Регистры xmm и ymm
- Выравнивание данных и кэш
- Семейства расширений
- Сборка и запуск
- Загрузка и сохранение
- Скалярная арифметика
- Упакованная арифметика
- Горизонтальные операции
- Сравнение
- Преобразование типов
- Математические инструкции
- Управление точностью
- Загрузка, сохранение и арифметика
- Умножение
- Сдвиги
- Логические операции
- Сравнение и маскирование
- Перестановки и компоновка
- Shuffle
- Unpack
- Blend
- Трёхоперандный синтаксис
- 256-битные операции
- Broadcast
- Смешивании SSE и AVX
- Сохранение и восстановление регистров
- Когда SIMD не помогает
- Мини-проект
- Список пройденного
- Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает. — Rick Cook
- Закончил обучение по направлению "Бэкенд разработчик С++" и успешно работаю c 2020 года.
- В данный момент занимаюсь переносом программ с Python, Go и других языков на C++, NASM и Fortran для оптимизации и ускорения расчетов в критически важных местах.
Показать больше
Зарегистрируйтесь
, чтобы посмотреть контент.