Встроенный ассемблер для архитектур Thumb2

Этот документ предполагает некоторое знакомство с программированием на языке ассемблера. Краткое описание набора инструкций см. в справочной карточке ARM Thumb-2 Instruction Set Quick Reference Card в разделе References ниже. Встроенный ассемблер поддерживает подмножество набора инструкций ARM Thumb-2, описанное здесь. Синтаксис старается быть как можно ближе к определённому ARM, преобразованному в вызовы функций Python.

Инструкции работают с 32-битными знаковыми целыми данными, за исключением случаев, где указано иное. Большинство поддерживаемых инструкций работают только с регистрами R0-R7: там, где поддерживаются R8-R15, это указано. Регистры R8-R12 должны быть восстановлены до их исходного значения перед возвратом из функции. Регистры R13-R15 представляют собой регистр связи (Link Register), указатель стека (Stack Pointer) и счётчик команд (Program Counter) соответственно.

Соглашения документа

Где это возможно, поведение каждой инструкции описывается на Python, например

  • add(Rd, Rn, Rm) Rd = Rn + Rm

Это позволяет продемонстрировать эффект инструкций на Python. В некоторых случаях это невозможно, поскольку Python не поддерживает такие концепции, как косвенная адресация. Псевдокод, применяемый в таких случаях, описан на соответствующей странице.

Категории инструкций

В следующих разделах подробно описывается подмножество набора инструкций ARM Thumb-2, поддерживаемое MicroPython.

Примеры использования

Эти разделы содержат дополнительные примеры кода и подсказки по использованию ассемблера.

Ссылки