MyTetra Share
Делитесь знаниями!
Документация по синтаксису ARM ассемблера
Время создания: 19.09.2023 14:13
Текстовые метки: arm, stm, stm32, cortex, thumb, инструкции, процессор, микропроцессор, ассемблер, assembly, синтаксис, документация, книга, машинный код
Раздел: Компьютер - Аппаратное обеспечение - Микроконтроллеры ARM
Запись: xintrea/mytetra_syncro/master/base/1695122037ygxh39tbyo/text.html на raw.github.com

Документация по процессорам семейства ARM очень обширная и не всегда однозначная. Например, если задаться целью найти в Интернете документацию на синтаксис команд ассемблера ARM, например для Cortex-M3, то будет найдено куча документов, но их названия будут слишком расплывчатыми, чтобы сразу понять, что в даннм документе будет расписан синтаксис ассемблера ARM и его инструкции.



Документация консорциума ARM


По сути, нужно знать, что синтаксис команд (и их кодирование в машинный код) находится в документе ARM Architecture Reference Manual который имеет обозначение ARM DDI 0100I.


Да, вот так, используются символы "1" и "I" в одном обозначении даже без пробелов и тире, причем по внешнему виду не скажешь, I - это i большое или L маленькое. Это такой сюрприз от разработчиков документации, чтоб никто не расслаблялся.


В данном документе есть раздел A6 The Thumb Instruction Set, в котором расписаны инструкции расширения Thumb (в котором обычно работают всякие BluePill STM32 и им подобные). До этого раздела в тексте будет куча примеров с ассемблерными инструкциями без объяснения что они из себя представляют. Это обычное дело. Хорошо что далее по тексту есть раздел, который объясняет что значат применяемые инструкции.


А так же в этом документе есть раздел A7 Thumb Instruction. В чем-то он повторяет раздел A6, только в нем все инструкции расположены по алфавиту и немного по-другому описаны. Для некоторых инструкций есть примеры использования.


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



https://www.massey.ac.nz/~mjjohnso/notes/59233/ARM%20Architecture%20Reference%20Manual.pdf




Документация на Cortex-M3 от STMicroelectronics


Так же существует документация PM0056 Programming manual для контроллеров STM32F10xxx/20xxx/21xxx/L1xxxx. В ней есть глава 3. The Cortex-M3 instruction set в которой описываются ассемблерные инструкции.


Прямая ссылка на данный документ:



https://www.st.com/resource/en/programming_manual/pm0056-stm32f10xxx20xxx21xxxl1xxxx-cortexm3-programming-manual-stmicroelectronics.pdf



Проблема этого, что характерно, официального, документа в том, что он написан с ошибками. Есть несколько важных мест, где между именем инструкции и первым аргументом нет пробела. И поэтому получаются несуществующие инструкции ассемблера:



MOVSR0, R1; R0 = R1, setting flags

RSBMIR0, R1, #0; If negative, R0 = -R1

LDRR8, [R10]; loads R8 from the address in R10.

LDRNER2, [R5, #960]!; loads (conditionally) R2 from a word



То есть, на самом деле авторы имели в виду другое:



MOVS R0, R1; R0 = R1, setting flags

RSBMI R0, R1, #0; If negative, R0 = -R1

LDR R8, [R10]; loads R8 from the address in R10.

LDRNE R2, [R5, #960]!; loads (conditionally) R2 from a word



Данные ошибки вводят в заблуждение пользователя-новичка, который глядя на кривые строки начинает считать, что Ассемблер ARM выше его понимания.



Книга об Ассемблере для владельцев Raspberry Pi Pico (eng)


В 2022 году была выпущена книга RP2040 Assembly Language Programming: ARM Cortex M0+ on the Raspberry Pi Pico. В ней последовательно рассказывается про устройство процессора ARM, про его систему команд, и в качестве примеров исполняемого кода используется Ассемблер. Также рассказывается про конструирование машинных кодов.


Данная книга является комерческим продуктом, поэтому прямых ссылок на нее нет. Известно только, что книга оцифрована и гуляет по сети в форматах PDF и EPub.



Курс ARM ассемблера Борнмутского университета (Великобритания)


В сети гуляет методичка от 2003 года по ассемблеру ARM для студентов Борнмутского университета. Так как данный университет международный, то методичка написана предельно простым английским языком (практически Simply English). Для ознакомления с основмыми особенностями ассемблера ARM она подходит лучше всего.


Прямая ссылка:



http://arantxa.ii.uam.es/~gdrivera/sed/docs/ARMBook.pdf



Документация по ARM64 на русском


Так же была найдена свежая документация на Armv9 и архитектуру AArch64. Документация написана на русском языке и располагается здесь:



https://metanit.com/assembler/arm64/



* * *



Все файлы с документацией (за исключением документации в виде страниц сайта) на Ассемблер ARM прикреплены к данной записи.


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования