Джокер
Администратор
- Регистрация
- 1 Янв 2015
- Сообщения
- 145.918
- Реакции
- 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 руб.
СКАЧАТЬ СЛИВЫ КУРСОВ
Пакет курсов "База 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 руб.
СКАЧАТЬ СЛИВЫ КУРСОВ
Для возможности скачивать складчины и сливы курсов нужно зарегистрироваться
Возможно, Вас ещё заинтересует:
- Бисквитные рулеты Классический и Без сахара (2022) [Zero Cake School] [Светлана Шубина]
- Привычки мышления. Зал интеллектуальных тренажеров для мозга [Янь Хань]
- Анатомия продаж. Система построения здорового отдела - от воронки до найма [Артём Владыкин]
- Логика и креатив. 50 головоломок для тренировки мозга от простого к сложному
- [Выкройки] Жилет Бао. Размер 42-52. Рост 164 [PatternClo]
- [Выкройки] Брюки Лесси. Размер 42-52. Рост 164 [PatternClo]
- Память и внимание. 50 головоломок для тренировки мозга от простого к сложному
- Энергия жизни. Как сохранять и восстанавливать силы для хорошей работоспособности и самочувствия [Татьяна Василец]
- [Выкройки] Сумка из Pinterest [YourTailor]
- Кино-лето AI [Тариф Максимум] [Руслан Хасаншин]