Данная книга продолжает серию «Книжная полка Истового инженера», которая издается при поддержке компании YADRO. Издание подготовлено к публикации Московским институтом электроники и математики им. А. И. Тихонова НИУ ВШЭ совместно с издательством «ДМК Пресс».
Перед вами переведенная и адаптированная для русскоязычного читателя книга С. Смита «RISC-V Assembly Language Programming», вышедшая в издательстве Apress в серии Maker Innovations в 2024 г. и уже получившая положительные отзывы и популярность в комьюнити разработчиков.
В ней изложены основы архитектуры набора инструкций RISC-V, описаны все группы инструкций языка ассемблера RISC-V, даны основные приемы разработки/оптимизации кода, а также способы взаимодействия с кодом на языках С и Python. Изучив основы программирования на языке ассемблера RISC-V с помощью этой книги, вы получите достаточно знаний, чтобы на ее основе создавать собственные проекты.
Книга предназначена для программистов, инженеров и студентов, которые уже умеют программировать на языках высокого уровня, таких как Python, lava, C# или даже С, и хотят изучить программирование на языке ассемблера на основе новой процессорной архитектуры RISC-V.

Чему вы научитесь.
Вы научитесь программировать на языке ассемблера для процессоров RISC-V, работающих в 32-битном либо 64-битном режиме. Все, что вы узнаете, непосредственно применимо ко всем устройствам RISC-V - от самых маленьких микроконтроллеров до самых больших суперскалярных суперкомпьютеров. Изучив язык ассемблера для одного процессора, вы получите инструменты для изучения языков программирования для других процессоров, например процессоров ARM, обычно используемых в мобильных устройствах.
Во всех устройствах RISC-V процессор является не просто центральным процессором, а целой системой на кристалле. Это означает, что большая часть функционала вычислительной системы может быть реализована на одном чипе. Когда компания разрабатывает устройство, она может выбирать различные модули, чтобы включать их в свой чип. Как правило, это процессор RISC-V с несколькими ядрами, то есть он может обрабатывать инструкции для нескольких программ, выполняемых одновременно. Скорее всего, он содержит несколько сопроцессоров для вычислений с плавающей точкой, графический процессор (GPU) и модули, реализующие различные коммуникационные протоколы.
ОГЛАВЛЕНИЕ.
От издательства.
Об авторе.
Научный редактор русского перевода.
Технический рецензент.
Благодарности.
Введение.
Предисловие от научного редактора русского перевода.
Глава 1. Начало работы.
История и эволюция процессора RISC-V.
Чему вы научитесь.
Десять причин изучать программирование на языке ассемблера.
Выполнение программ на RISC-V процессорах.
Программирование простой программы «Hello World».
Программа Hello World на Starfive Visionfive 2.
Программирование Hello World в эмуляторе QEMU.
Запуск программы Hello World на микроконтроллере ESP32-C3.
Итоги главы.
Упражнения.
Глава 2. Загрузка и сложение.
Компьютеры и числа.
Отрицательные числа.
Дополнительный код.
Инструкции ассемблера RISC-V.
Регистры процессора.
Формат инструкций RISC-V.
Ассемблер GCC.
Сложение регистров.
32 бита в 64-битном мире.
Перемещение регистров.
Непосредственный операнд.
Инструкция загрузки значения старших битов регистра.
Сдвиг битов.
Загрузка чисел в регистры большего размера.
Другие инструкции сдвига.
Вычитание.
Итоги главы.
Упражнения.
Глава 3. Инструменты разработчика.
GNU Make.
Перекомпоновка проекта.
Правило компоновки файлов.S.
Определение переменных.
Компоновка с помощью CMake.
Отладка с помощью gdb.
Подготовка к отладке.
Настройка под Linux.
Запуск отладчика gdb.
Настройка командной строки gdb под ESP32-C3.
Отладка с помощью gdb.
Итоги главы.
Упражнения.
Глава 4. Управление потоком программ.
Создание безусловных переходов.
Условные ветвления.
Использование псевдоинструкций ветвления.
Циклы.
Конструкция if/then/else.
Логические операции.
Конструктивные шаблоны.
Преобразование целых чисел в ASCII.
Производительность инструкций ветвления.
Инструкции сравнения.
Итоги главы.
Упражнения.
Глава 5. Работа с памятью.
Задание содержимого памяти.
Секции программы.
Прямой и обратный форматы следования байтов.
Адресация памяти.
Загрузка адреса памяти в регистр.
Загрузка данных из памяти.
Комбинирование загрузки адресов и памяти.
Сохранение регистра.
Смягчение адреса.
Конвертация в верхний регистр.
Итоги главы.
Упражнения.
Глава 6. Функции и стек.
Стек.
Переход и связывание.
Вложенные вызовы функций.
Параметры функций и возвращаемые значения.
Управление регистрами.
Краткое описание алгоритма вызова функции.
Еще раз о конвертации в верхний регистр.
Стековые кадры.
Макрофункции.
Метки.
Итоги главы.
Упражнения.
Глава 7. Службы операционной системы Linux.
Службы Linux.
Соглашение о вызовах.
Обертки вызовов функций.
Конвертация текста файла в верхний регистр.
Итоги главы.
Упражнения.
Глава 8. Программирование контактов GPIO.
GPIO.
В Linux все является файлом.
Мигание светодиодами.
Ближе к «железу».
Виртуальная память.
В устройствах все является памятью.
Регистры в битах.
Больше мигающих светодиодов.
Доступ с полномочиями суперпользователя.
Итоги главы.
Упражнения.
Глава 9. Взаимодействие с языками C и Python.
Вызов подпрограмм, разработанных на языке С.
Вызов подпрограмм на языке ассемблера из С.
Упаковка исходного кода.
Встраивание исходного кода на языке ассемблера в исходный код на языке С.
Вызов ассемблерных команд из Python.
Итоги главы.
Упражнения.
Глава 10. Умножение и деление.
Умножение.
Деление.
Пример: умножение матриц.
Итоги главы.
Упражнения.
Глава 11. Операции с числами с плавающей точкой.
Числа с плавающей точкой.
Определение чисел с плавающей точкой.
Регистры для чисел с плавающей точкой.
Протокол вызова функций.
Загрузка и сохранение регистров для операций с плавающей точкой.
Выполнение базовой арифметики.
Вычисление расстояния между точками.
Конвертация чисел с плавающей точкой.
Сравнение чисел с плавающей точкой.
Итоги главы.
Упражнения.
Глава 12. Оптимизация исходного кода.
Оптимизация подпрограммы конвертации текстовой строки в верхний регистр.
Советы по оптимизации исходного кода.
Итоги главы.
Упражнения.
Глава 13. Чтение и понимание исходного кода.
Просмотр исходного кода Linux и GCC.
Исходный код, генерируемый GCC.
Реконструкция программного кода и Ghidra.
Итоги главы.
Упражнения.
Глава 14. Взлом исходного кода.
Взлом с помощью переполнения буфера.
Причины переполнения буфера.
Кража номеров кредитных карт.
Смягчение уязвимостей, связанных с переполнением буфера.
Компромиссы методов предупреждения переполнения буфера.
Итоги главы.
Упражнения.
Приложение A. Набор инструкций RISC-V.
Приложение B. Двоичные форматы.
Приложение C. Директивы ассемблера.
Приложение D. ASCII.
Приложение E. Ответы к упражнениям.
Предметный указатель.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Программирование на языке ассемблера RISC-V, Стивен С., 2025 - fileskachat.com, быстрое и бесплатное скачивание.
Скачать pdf
Ниже можно купить эту книгу, если она есть в продаже, и похожие книги по лучшей цене со скидкой с доставкой по всей России.Купить книги
Скачать - pdf - Яндекс.Диск.
Дата публикации:
Теги: учебник по программированию :: программирование :: Стивен :: ассемблер
Смотрите также учебники, книги и учебные материалы:
Предыдущие статьи:








