Учебное пособие посвящено основам программирования на языке ассемблера GAS (GNU assembler) в операционных системах Linux. В нем рассматривается система команд для платформы х86-64, типовые структуры программ. Значительная часть пособия посвящена элементам системного программирования в Linux на ассемблере: управления файловой системой, динамическая память, интегрирование с языками высокого уровня, многозадачное программирование.
Пособие рассчитано на студентов высших учебных заведений, обучающихся по инженерным специальностям, связанным с разработкой программного обеспечения.
Пишем первую программу 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. Изменение прав доступа.
СПИСОК РЕКОМЕНДУЕМОЙ И ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ.
Купить .
По кнопкам выше и ниже «Купить бумажную книгу» и по ссылке «Купить» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.
По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «ЛитРес», и потом ее скачать на сайте Литреса.
По кнопке «Найти похожие материалы на других сайтах» можно найти похожие материалы на других сайтах.
On the buttons above and below you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.
Хештеги: #учебник по программированию :: #программирование :: #Пирогов
Смотрите также учебники, книги и учебные материалы:
- Искусство Agile-разработки, Теория и практика гибкой разработки ПО, Шор Д., Уорден Ш., 2024
- Программирование микроконтроллеров для беспроводных систем связи, Самойлов С.А., 2023
- Learn AI-Assisted Python Programming With GitHub Copilot and ChatGPT, Porter L., Zingaro D., 2024
- Основы алгоритмизации и программирования = Algorithms and Data Structures, Учебное пособие, Навроцкий А.А., Гуринович А.Б., 2022
- Python for Data Science For Dummies, Mueller J.P., Massaron L., 2024
- Learn to Implement Games with Code, Quick J.M., 2016
- Fullstack React with TypeScript, Learn Pro Patterns for Hooks, Testing, Redux, SSR, and GraphQL, Ivanov M., Bespoyasov A., 2020
- Теория и технологии программирования, Учебное пособие, Культин Н.Б., 2022