Введение в программирование на языке ассемблера GAS в операционной системе Linux, Пирогов В.Ю., 2022

Введение в программирование на языке ассемблера GAS в операционной системе Linux, Пирогов В.Ю., 2022.

   Учебное пособие посвящено основам программирования на языке ассемблера GAS (GNU assembler) в операционных системах Linux. В нем рассматривается система команд для платформы х86-64, типовые структуры программ. Значительная часть пособия посвящена элементам системного программирования в Linux на ассемблере: управления файловой системой, динамическая память, интегрирование с языками высокого уровня, многозадачное программирование.
Пособие рассчитано на студентов высших учебных заведений, обучающихся по инженерным специальностям, связанным с разработкой программного обеспечения.

Введение в программирование на языке ассемблера GAS в операционной системе Linux, Пирогов В.Ю., 2022


Пишем первую программу Hello, world!
Ну вот настало время, когда нужно и можно написать программу «Hello, world!». Это не сложно ведь у нас имеется шаблон программы. И мы просто должны его правильно заполнить. Но это еще не все мы должны знать, как вывести информацию на консоль. Как уже понятно из предыдущего параграфа одним из инструментов, который широко используется при программировании на ассемблере в операционной системе Linux являются системные вызовы. Мы вызываем функцию ядра, которая выполняет то или иное системное действие. В предыдущем параграфе мы вызывали функцию, которая заканчивает выполнение текущей программы (процесса). И как легко догадаться мы должны теперь использовать системный вызов, который выводит строку текста на консоль. В дальнейшем мы дадим список системных вызовов операционной системы Linux, а пока будем знакомить с ними последовательно, по мере их использования. В данном параграфе это системный вызов с номером 1 - вывод на консоль.

Как и говорили, мы возьмем программу из листинга 3 и дополним ее. Мы дополним ее еще одним системным вызовом. Кроме этого добавим в программу еще одну секцию для хранения там данных, а точнее строки, которую будем выводить. Эта программа представлена в листинге 4.

ОГЛАВЛЕНИЕ.
ВВЕДЕНИЕ.
ГЛАВА 1. АССЕМБЛЕР. НАЧАЛО.
1.1. Как работает компьютер.
1.2. Машинный язык.
1.3. Ассемблеры.
1.3.1. Ассемблер TASM.
1.3.2. Ассемблер MASM.
1.3.3. Ассемблер FASM.
1.3.4. Ассемблер NASM.
1.3.5. Ассемблер YASM.
1.3.6. Ассемблер RosAsm.
1.3.7. Ассемблер GAS.
1.4. Первые программы для Linux на GNU Assembler.
1.5. Пишем первую программу Hello, world!.
1.6. Системы счисления.
1.6.1. Десятичная система счисления.
1.6.2. Двоичная система счисления.
1.6.3. Шестнадцатеричная система счисления.
1.7. Представление чисел в компьютере.
1.7.1. Беззнаковые целые числа в компьютере.
1.7.2. Числа со знаком в компьютере.
1.7.3. Вещественные числа.
1.8. Послание старых мастеров.
ГЛАВА 2. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ АССЕМБЛЕРА.
2.1. Архитектура x86-64 для прикладного программиста.
2.2. Операции с ячейками памяти.
2.3. Системные вызовы.
2.4. Стандартный ввод-вывод.
2.5. Строки и числа.
2.6. Стек.
2.7. Функции в ассемблере.
2.8. Функции в ассемблере. Передача параметров через стек.
2.9. Функции в ассемблере. Передача параметров в системах архитектуры x86-64.
2.10. Функции в ассемблере. Локальные переменные.
2.11. Пример программы с использованием функций.
2.12. Пример рекурсивной функции на ассемблере с использованием локальной переменной.
ГЛАВА 3. КОМАНДЫ ПРОЦЕССОРА АРХИТЕКТУРЫ X86-64.
3.1. Адресация памяти.
3.2. Строковые операции процессора x86-64.
3.3. Команды условных и безусловных переходов.
3.4. Условные конструкции на языке ассемблера.
3.5. Базовые арифметические операции.
3.6. Битовые и логические операции.
3.7. Команды для работы с числами с плавающей точкой.
3.8. Действия с числами с плавающей точкой.
3.9. Расширения процессоров x86-64.
ГЛАВА 4. УПРАВЛЕНИЕ ФАЙЛАМИ.
4.1. Открытие файла, чтение из файла.
4.2. Запись в файл. Пример копирования.
4.3. Пример работы с текстовым файлом.
4.4. Перемещение внутри файла.
4.5. Программное изменение режимов доступа к файлам и папкам.
4.6. Удаление и переименование файлов.
4.7. Создание и удаление каталогов.
4.8. Параметры командной строки.
4.9. Пример использования параметров командной строки в простой утилите.
4.10. Программа чтения содержимого каталога.
ГЛАВА 5. ВЗАИМОДЕЙСТВИЕ С ОПЕРАЦИОННОЙ СИСТЕМОЙ. УПРАВЛЕНИЕ ПАМЯТЬЮ.
5.1. Глобальная статическая память.
5.2. Стековая память.
5.3. Динамическая память.
5.4. Файлы, отображаемые в память, функция mmap.
5.5. Использование системной функции mmap для получения динамической памяти.
ГЛАВА 6. БИБЛИОТЕКИ И ЯЗЫКИ ВЫСОКОГО УРОВНЯ.
6.1. Объектные модули и их объединение.
6.2. Компилирование с помощью программы gcc.
6.3. Использование стандартных библиотечных функций C и доступ к параметрам командной строки.
6.4. Создание статических библиотек.
6.5. Использование ассемблерного кода в языках высокого уровня.
6.6. Динамические библиотеки на языке ассемблера.
6.7. Использование кода на языке высокого уровня в программе на языке ассемблера.
ГЛАВА 7. МНОГОЗАДАЧНОСТЬ.
7.1. Запуск процессов. Системная функция execve.
7.2. Создание процесса.
7.3. Ожидание конца работы дочернего процессах.
7.4. Получение строк окружения.
7.5. Взаимодействие процессов. Разделяемая память.
7.6. Взаимодействие процессов. Канал pipe.
7.7. Использование семафоров для синхронизации процессов.
ПРИЛОЖЕНИЯ.
Приложение 1. Примеры для математического сопроцессора.
Приложение 2. Примеры управления файлами.
Приложение 3. Изменение прав доступа.
СПИСОК РЕКОМЕНДУЕМОЙ И ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ.



Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Введение в программирование на языке ассемблера GAS в операционной системе Linux, Пирогов В.Ю., 2022 - fileskachat.com, быстрое и бесплатное скачивание.

Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.Купить эту книгу



Скачать - pdf - Яндекс.Диск.
Дата публикации:





Теги: :: ::


Следующие учебники и книги:
Предыдущие статьи:


 


 

Книги, учебники, обучение по разделам




Не нашёл? Найди:





2024-04-27 05:44:24