Программирование на языке ассемблера Linux x86 с нуля. Создавайте более 50 программ сборки - x86 32-бит 64-бит, SIMD, алгоритмы обработки изображений, процедуры DSP, MMX, SSE, AVX [2020]
Linux x86 Assembly Language Programming From Ground Up™. Build over 50 Assembly Programs - x86 32-bit 64-bit, SIMD, Image Processing Algorithms, DSP Routines, MMX, SSE, AVX [2020]
Udemy
Israel Gbati
Добро пожаловать на курс « Программирование сборки Linux с нуля» .
Это наиболее полный онлайн-курс по сборке x86, охватывающий историю процессоров x86 , архитектуру и практическое программирование сборки.
Описание курса
Я проведу вас пошагово через увлекательные и увлекательные видеоуроки и научу всему, что вам нужно знать, чтобы добиться успеха в качестве разработчика x86.
К концу этого курса вы освоите Instruction Set x86 Core , , то x86 MMX Extension Instruction Set, х86 Streaming SIMD Extension (SSE) Набор команд и x86 Advanced Vector Extension (AVX) Набор инструкций . Вы сможете разрабатывать сложные алгоритмы обработки изображений на ассемблере x86 . Вы сможете разрабатывать сложные математические алгоритмы на ассемблере x86. Вы также сможете писать надежные программы, которые смешивают файлы ассемблера C ++ и x86 .
Кроме того, вы освоите повседневные вещи, такие как навигация по массивам , вычисление статистических свойств массива, таких как вычисление среднего и стандартного отклонения для каждой строки и столбца. Все это написано на ассемблере. Кроме того, этот курс научит вас использовать как GAS Assembler, так и NASM Assembler.
Есть еще много всего. Пожалуйста, ознакомьтесь с полной программой курса.
ПОМНИТЕ: я не сомневаюсь, что вам понравится этот курс. Также он поставляется с ПОЛНОЙ гарантией возврата денег в течение 30 дней! Проще говоря, вам действительно нечего терять и все можно получить.
Зарегистрируйтесь и приступайте к написанию кода низкого уровня
Чему Вы научитесь
- Освойте набор инструкций ядра x86
- Понять разницу в кодировании между x86-32 и x86 -64
- Разработка сложных математических алгоритмов на ассемблере x86
- Освойте набор команд x86 Streaming SIMD Extension (SSE)
- Освойте набор инструкций расширения MMX для x86
- Уметь создавать таблицы поиска и таблицы переходов в сборке x86
- Уметь писать надежный смешанный код сборки C / C ++ и x86
- Освойте синтаксис ассемблера NASM
- Освойте синтаксис GAS Assembler
- Освойте системные вызовы Linux
- Если вы абсолютный новичок в программировании на ассемблере, пройдите этот курс.
- Если вы опытный программист, пройдите этот курс, чтобы познакомиться с архитектурой x86 и программированием на ассемблере.
- Если вы переходите с других архитектур, таких как ARM, на x86, то это быстрый способ сделать это. Вы можете сразу приступить к работе с набором инструкций x86.
Раздел 1 - Введение
1.1 Введение
Раздел 2 - Начало2.1 Настройка среды разработки
2.2 Тестирование нашей установки
Раздел 3 - Процессор x86 и компьютерные архитектуры2.2 Тестирование нашей установки
3.1 Эволюция процессоров Intel
3.2 Гарвардская архитектура против архитектуры фон Неймана
Раздел 4 - Вычислительное устройство3.2 Гарвардская архитектура против архитектуры фон Неймана
4.1 Логические ворота
4.2 От транзисторов к операционным системам
4.3 Системы счисления
Раздел 5 - Модель программиста4.2 От транзисторов к операционным системам
4.3 Системы счисления
5.1 Обзор типов данных x86
5.2 Базовая конструкция микрокомпьютера x86
5.3 Режимы работы x86
5.4 Обзор регистров x86
5.5 Обзор флагов x86
5.6 Обзор модуля с плавающей запятой
5.7 Обзор моделей памяти x86
5.8 Понимание шаблона именования регистров
Раздел 6 - Введение в язык ассемблера x865.2 Базовая конструкция микрокомпьютера x86
5.3 Режимы работы x86
5.4 Обзор регистров x86
5.5 Обзор флагов x86
5.6 Обзор модуля с плавающей запятой
5.7 Обзор моделей памяти x86
5.8 Понимание шаблона именования регистров
6.1 Кодирование: использование отладчика GDB
6.2 Обзор целых чисел x86
6.3 Введение в директивы и инструкции
6.4 Порядок байтов
6.5 Кодирование: изменение порядка байтов с помощью инструкции BSWAP
6.6 Общие сведения о соглашениях о вызовах
6.7 Обычно используемые директивы GAS
6.8 Обычно используемые директивы NASM
6.9 Введение в системные вызовы Linux
6.10 Кодирование: эксперименты с системными вызовами
Раздел 7 - Инструкции по передачи данных6.2 Обзор целых чисел x86
6.3 Введение в директивы и инструкции
6.4 Порядок байтов
6.5 Кодирование: изменение порядка байтов с помощью инструкции BSWAP
6.6 Общие сведения о соглашениях о вызовах
6.7 Обычно используемые директивы GAS
6.8 Обычно используемые директивы NASM
6.9 Введение в системные вызовы Linux
6.10 Кодирование: эксперименты с системными вызовами
7.1 Типы операндов
7.2 Обзор инструкции MOV
7.3 Понимание прямого - смещения операндов
7.4 Режимы адресации памяти
Раздел 8 - Арифметические инструкции7.2 Обзор инструкции MOV
7.3 Понимание прямого - смещения операндов
7.4 Режимы адресации памяти
8.1 Краткое изложение некоторых арифметических инструкций
8.2 Инструкции по увеличению и уменьшению
8.3 Инструкции по сложению и вычитанию
8.4 Кодирование: экспериментирование с инструкцией SUB
8.5 Операторы данных и директивы
8.6 Кодирование: выполнение умножений с помощью инструкций SHIFT
Раздел 9 - Понимание режимов адресации8.2 Инструкции по увеличению и уменьшению
8.3 Инструкции по сложению и вычитанию
8.4 Кодирование: экспериментирование с инструкцией SUB
8.5 Операторы данных и директивы
8.6 Кодирование: выполнение умножений с помощью инструкций SHIFT
9.1 Обращение с помощью синтаксиса AT&T
Раздел 10 - Условное ветвление10.1 Краткое изложение некоторых инструкций по управлению потоком
10.2 Инструкции по прыжкам и петлям
10.3 Логические инструкции
10.4 Инструкции по прыжкам в условиях
10.5 Кодирование: эксперименты с условными прыжками
10.6 Кодирование: эксперименты с безусловными прыжками
10.7 Кодирование: понимание инструкции CALL
10.8 Инструкционные операнды
Раздел 11 - Встроенное программирование сборки10.2 Инструкции по прыжкам и петлям
10.3 Логические инструкции
10.4 Инструкции по прыжкам в условиях
10.5 Кодирование: эксперименты с условными прыжками
10.6 Кодирование: эксперименты с безусловными прыжками
10.7 Кодирование: понимание инструкции CALL
10.8 Инструкционные операнды
11.1 Кодирование: доступ к глобальным переменным во встроенной сборке
11.2 Кодирование: использование расширенного формата встроенной сборки
11.3 Кодирование: использование расширенного формата встроенной сборки с заполнителями
11.4 Кодирование: ссылки на заполнители
11.5 Кодирование: еще один пример
11.6 Кодирование: использование альтернативных заполнителей
11.7 Кодирование: использование ячеек памяти
11.8 Кодирование: использование регистров с плавающей запятой
11.9 Кодирование: реализация переходов во встроенной сборке
11.10 Кодирование: Создание МАКРО-функций сборки
Раздел 12 - Работа со строками11.2 Кодирование: использование расширенного формата встроенной сборки
11.3 Кодирование: использование расширенного формата встроенной сборки с заполнителями
11.4 Кодирование: ссылки на заполнители
11.5 Кодирование: еще один пример
11.6 Кодирование: использование альтернативных заполнителей
11.7 Кодирование: использование ячеек памяти
11.8 Кодирование: использование регистров с плавающей запятой
11.9 Кодирование: реализация переходов во встроенной сборке
11.10 Кодирование: Создание МАКРО-функций сборки
12.1 Кодирование: перемещение байтов строк
12.2 Кодирование: перемещение целых предложений
12.3 Кодирование: загрузка строк с помощью инструкции REP
12.4 Кодирование: написание ассемблерной программы для преобразования строк из нижнего регистра в верхний
12.5 Кодирование: сравнение строк
12.6 Кодирование: сравнение предложений
12.7 Кодирование: поиск символов в строках
Раздел 13 - Написание 64-битных ассемблерных программ12.2 Кодирование: перемещение целых предложений
12.3 Кодирование: загрузка строк с помощью инструкции REP
12.4 Кодирование: написание ассемблерной программы для преобразования строк из нижнего регистра в верхний
12.5 Кодирование: сравнение строк
12.6 Кодирование: сравнение предложений
12.7 Кодирование: поиск символов в строках
13.1 Кодирование: вызов библиотеки C
13.2 Кодирование: вызов библиотеки C (NASM)
13.3 Кодирование: смешивание C и сборка
13.4 Кодирование: написание ассемблерной программы для генерации чисел Фибоначчи
13.5 Кодирование: написание ассемблерной программы для генерации чисел Фибоначчи (NASM)
13.6 Кодирование: чтение аргументов командной строки
13.7 Кодирование: чтение аргументов командной строки (NASM)
13.8 Кодирование: выполнение вычислений с аргументами командной строки
13.9 Кодирование: выполнение вычислений с аргументами командной строки (NASM)
13.10 Кодирование: смешивание регистров с плавающей запятой и C
13.11 Кодирование: разработка рекурсивного алгоритма
13.12 Кодирование: понимание стека
Раздел 14 - Алгоритмы сортировки13.2 Кодирование: вызов библиотеки C (NASM)
13.3 Кодирование: смешивание C и сборка
13.4 Кодирование: написание ассемблерной программы для генерации чисел Фибоначчи
13.5 Кодирование: написание ассемблерной программы для генерации чисел Фибоначчи (NASM)
13.6 Кодирование: чтение аргументов командной строки
13.7 Кодирование: чтение аргументов командной строки (NASM)
13.8 Кодирование: выполнение вычислений с аргументами командной строки
13.9 Кодирование: выполнение вычислений с аргументами командной строки (NASM)
13.10 Кодирование: смешивание регистров с плавающей запятой и C
13.11 Кодирование: разработка рекурсивного алгоритма
13.12 Кодирование: понимание стека
14.1 Кодирование: реализация алгоритма пузырьковой сортировки
Раздел 15 - Закрытие15.1 Заключительные замечания
Язык курса: Английский
Перевод текста: translate.google
Стоимость курса: 49,99 EUR
https://www.udemy.com/course/linux-assembly-language-programming/