Программирование на языке ассемблера RISC-V
В приложении удобнееQR для скачивания приложенияRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

Читать бесплатно онлайн книгу  Программирование на языке ассемблера RISC-V
автор 

Читать полностью
Бесплатный отрывокЧитать

УДК 004.438Assembler

ББК 32.973.26-018.1

С50

Научный редактор

Романов А. Ю. – канд. техн. наук, доцент Московского института электроники и математики им. А. Н. Тихонова Национального исследовательского университета «Высшая школа экономики».

С50 Стивен Смит

Программирование на языке ассемблера RISC-V / пер. с англ. А. В. Логунова; под науч. ред. А. Ю. Романова. – М.: ДМК Пресс, 2025. – 276 с.: ил. – (Книжная полка Истового инженера).

ISBN 978-5-93700-300-3

Данная книга продолжает серию «Книжная полка Истового инженера», которая издается при поддержке компании YADRO. Издание подготовлено к публикации Московским институтом электроники и математики им. А. Н. Тихонова НИУ ВШЭ совместно с издательством «ДМК Пресс».

Перед вами переведенная и адаптированная для русскоязычного читателя книга С. Смита «RISC-V Assembly Language Programming», вышедшая в издательстве Apress в серии Maker Innovations в 2024 г. и уже получившая положительные отзывы и популярность в комьюнити разработчиков.

В ней изложены основы архитектуры набора инструкций RISC-V, описаны все группы инструкций языка ассемблера RISC-V, даны основные приемы разработки/оптимизации кода, а также способы взаимодействия с кодом на языках C и Python. Изучив основы программирования на языке ассемблера RISC-V с помощью этой книги, вы получите достаточно знаний, чтобы на ее основе создавать собственные проекты.

Книга предназначена для программистов, инженеров и студентов, которые уже умеют программировать на языках высокого уровня, таких как Python, Java, C# или даже C, и хотят изучить программирование на языке ассемблера на основе новой процессорной архитектуры RISC-V.

Original English language edition published by Apress Media, LLC is a California LLC. Russian language edition copyright©2024 by DMK Press. All rights reserved.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.

ISBN 979-8-8688-0136-5 (англ.) Copyright © 2024 by Stephen Smith

© НИУ ВШЭ, 2025

ISBN 978-5-93700-300-3 (рус.) © Оформление, перевод на русский язык,

издание, ДМК Пресс, 2025

Эта книга посвящается моей любимой жене и редактору Каталин Лабонте-Смит

От издательства

Отзывы и пожелания

Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете об этой книге – что понравилось или, может быть, не понравилось. Отзывы важны для нас, чтобы выпускать книги, которые будут для вас максимально полезны.

Вы можете написать отзыв на нашем сайте www.dmkpress.com, зайдя на страницу книги и оставив комментарий в разделе «Отзывы и рецензии».

Также можно послать письмо редактору русского перевода
(a.romanov@hse.ru) или главному редактору по адресу dmkpress@gmail.com;
при этом укажите название книги в теме письма.

Если вы являетесь экспертом в какой-либо области и заинтересованы в создании новой книги, заполните форму на нашем сайте по адресу
http://dmkpress.com/authors/publish_book/ или напишите в издательство по адресу dmkpress@gmail.com.

Список опечаток

Хотя мы приняли все возможные меры для того, чтобы обеспечить высокое качество наших текстов, ошибки все равно случаются. Если вы найдете ошибку в одной из наших книг, мы будем очень благодарны, если вы сооб щите о ней главному редактору по адресу dmkpress@gmail.com. Сделав это, вы избавите других читателей от недопонимания и поможете нам улучшить последующие издания этой книги.

Нарушение авторских прав

Пиратство в интернете по-прежнему остается насущной проблемой. Издательство «ДМК Пресс» очень серьезно относится к вопросам защиты авторских прав и лицензирования. Если вы столкнетесь в интернете с незаконной публикацией какой-либо из наших книг, пожалуйста, пришлите нам ссылку на интернет-ресурс, чтобы мы могли применить санкции.

Ссылку на подозрительные материалы можно прислать по адресу электронной почты dmkpress@gmail.com.

Мы высоко ценим любую помощь по защите наших авторов, благодаря которой мы можем предоставлять вам качественные материалы.

Благодарности

Здесь будут фамилии тех, кто помогал изданию этой книги, прислав в издательство найденные ошибки или ссылку на подозрительные материалы.

Об авторе

Стивен Смит – архитектор программного обеспечения, проживающий в Гибсоне, Британская Колумбия, Канада. Он занимается разработкой программного обеспечения со школьных лет, является экспертом в области искусственного интеллекта и программирования на языке ассемблера, получил лицензию Advanced HAM Radio License, увлекается горным велосипедом, пешим туризмом и фотографированием природы. Работает волонтером в поисковой спасательной организации Sunshine Coast Search and Rescue. Автор книг: «Программирование на языке ассемблера для Raspberry Pi: программирование процессоров ARM», «Программирование на 64-битном языке ассемблера для ARM: разработка для одноплатных компьютеров Raspberry Pi и мобильных устройств» и «Программирование на языке ассемблера для RP2040: ARM Cortex-M0+ на Raspberry Pi Pico». Все эти книги были опубликованы издательством Apress. Кроме того, он ведет свой популярный блог о технологиях по адресу: smist08.wordpress.com.

Научный редактор
русского перевода

Романов Александр Юрьевич (https://www.hse.ru/staff/a.romanov) – научный редактор русского перевода данной книги, доцент Московского института электроники и математики им. А. Н. Тихонова Национального исследовательского университета «Высшая школа экономики» (МИЭМ НИУ ВШЭ). С 2014 г. работает в МИЭМ НИУ ВШЭ, где возглавляет лабораторию САПР (https://miem.hse.ru/edu/ce/cadsystem), специализирующуюся на проектной деятельности, а также разработке цифровых систем на ПЛИС/микроконтроллерах, робототехнических комплексов, аппаратных реализаций систем искусственного интеллекта, многопроцессорных систем, систем удаленного доступа к лабораторному оборудованию и т. д. В 2015 г. защитил диссертацию в Институте проблем проектирования в микроэлектронике РАН (г. Зеленоград), является автором более 200 научных статей, патентов и книг. Преподает разработку встраиваемых систем и системное программирование с 2009 г.

Технический рецензент

Стюарт Уоткисс – увлеченный созидатель, ставший автором многочисленных проектов в области физических вычислений с использованием различных компьютеров и микроконтроллеров. Является автором книг «Изучение электроники с Raspberry Pi» и «Начала программирования игр с Pygame Zero». Выпускник Университета Халла, где получил степень магистра в области электронной техники, а в последнее время учился в Технологическом институте Джорджии, где получил степень магистра в области вычислительных наук.

Стюарт также занимается волонтерской деятельностью в качестве посла STEM, помогая преподавать программирование и физические вычисления школьникам и на мероприятиях, посвященных Raspberry Pi. Является автором многочисленных ресурсов для тех, кто хочет узнать больше об электронике и вычислительной технике, которые доступны на его сайте
(www.penguintutor.com).

Благодарности

Ни одна книга не пишется в одиночку. Хотел бы выразить особую благодарность моей жене Каталинн Лабонте-Смит за ее поддержку, ободрение и квалифицированное редактирование.

Хочу поблагодарить коллектив издательства Apress, всех тех, кто способствовал процессу создания книги, сделав его легким и приятным. Особые слова благодарности Нирмалу Сельвараджу, моему редактору, благодаря которому весь проект шел быстро и гладко. Спасибо Мириам Хайдара, редактору по закупкам в области мобильных технологий и программ для разработчиков, которая дала старт проекту. Спасибо Стюарту Уоткиссу, моему техническому рецензенту, который очень помог улучшить эту книгу.

Введение

Сердцем каждого компьютера и интеллектуального устройства является центральный процессор (ЦП). Исторически сложилось так, что каждый центральный процессор производится одной компанией, которая жестко контролирует набор инструкций и внутреннюю работу процессора. RISC-V (произносится как Risk Five) – это новый подход, основанный на принципах открытого исходного кода. Центральный процессор RISC-V может быть реализован любым желающим, используя стандартизированный набор инструкций, не требуя специального лицензирования или выплаты роялти. Как следствие процессоры RISC-V стоят гораздо дешевле, чем проприетарные процессоры, и заняли лидирующие позиции в сегменте недорогих микроконтроллеров. Сегодня, когда появляются все более мощные процессоры RISC-V, что привело к появлению одноплатных компьютеров наподобие Raspberry Pi, а также недорогих ноутбуков и планшетов, эта книга рассказывает о внутреннем устройстве типичных процессоров RISC-V и подробно описывает реализованный в них набор инструкций открытого языка ассемблера.

Язык ассемблера1 – это нативное, самое низкоуровневое средство программирования компьютера. Каждый обрабатывающий чип имеет свой собственный язык ассемблера. Эта книга учит программировать процессоры RISC-V, работающие в 32-битном либо 64-битном режиме.

Изучение принципов работы компьютера и освоение языка ассемблера – отличный способ вникнуть в мельчайшие детали устройства вычислительных систем. Недорогие микроконтроллеры и одноплатные компьютеры представляют собой идеальные платформы для изучения передовых концепций в области вычислительной техники.

Несмотря на то что такие устройства являются маломощными и компактными, они все же представляют собой сложные вычислительные системы, многие из которых способны работать под управлением полноценной операционной системы Linux. Благодаря стандартизированному набору инструкций RISC-V, обучившись программировать на одном процессоре RISC-V, вы сможете применять свои навыки ко всем процессорам RISC-V.

В этой книге рассказывается о том, как программировать процессоры RISC-V на самом низком уровне, максимально приближенном к аппаратному. Читатели узнают следующее:

  • как форматировать инструкции и объединять их в программы, а также особенности двоичных форматов данных;
  • как программировать расширения набора инструкций RISC-V, такие как инструкции с плавающей точкой;
  • как управлять интегрированными аппаратными устройствами путем прямого чтения из регистров и записи в регистры управления аппаратными средствами;
  • как взаимодействовать с операционной системой Linux и комплектами разработчика программного обеспечения (SDK) для микроконтроллеров.

Эти задачи проще всего изучить на одноплатном компьютере RISC-V, таком как Starfive Visionfive 2. В книге также подробно описан способ эмуляции процессора RISC-V на компьютере Intel/AMD с помощью эмулятора QEMU, а также программирования микроконтроллера Espressif ESP32-C3. Все инструменты, необходимые для изучения программирования на языке ассемблера, имеют открытый исходный код и находятся в открытом доступе.

Данная книга содержит множество рабочих программ, с которыми можно экспериментировать, изучать и которые можно использовать в качестве отправной точки (шаблона) для разработки собственных программ. Существует только один способ научиться программированию – это заниматься им на практике, поэтому не бойтесь экспериментировать, ведь это единственный способ научиться.

Знание принципов работы процессора на уровне ассемблера и низкоуровневых двоичных структур данных сделает из вас хорошего программиста во всех остальных областях, даже если программирование на языке ассемблера не используется в вашей повседневной жизни. Знание принципов работы процессора позволит вам разрабатывать более эффективный исходный код на языке C и даже поможет в программировании на языке Python.

Надеемся, что вы получите удовольствие от этого введения в язык ассемблера. Освоение языка для одного семейства процессоров поможет в изучении и использовании любых других процессорных архитектур, с которыми вы встретитесь на протяжении своей карьеры программиста.

[1] Язык сборки (англ. assembly language), или язык ассемблера, – это низкоуровневый язык программирования, который представляет собой промежуточное звено между машинным кодом и высокоуровневыми языками программирования. Его исходный код является символьным представлением машинного кода, то есть представлением набора команд конкретной архитектуры. Трансляцию программы в машинный код выполняет специальный инструмент – сборщик, или ассемблер (англ. assembler). Отсюда и понятие «язык ассемблера». Далее в переводе понятия «ассемблер» и «язык ассемблера» используются взаимозаменяемо. –Прим. перев.

Похожие книги