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

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

Інструкції оперують 32-бітовими знаковими цілими числами, якщо не вказано інше. Більшість підтримуваних інструкцій оперують лише регістрами R0-R7: підтримка R8-R15 вказується окремо. Регістри R8-R12 повинні бути відновлені до своїх початкових значень перед поверненням з функції. Регістри R13-R15 є регістром зв’язку, вказівником стеку та лічильником команд відповідно.

Конвенції документа

Де можливо, поведінка кожної інструкції описана на Python, наприклад

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

Це дозволяє демонструвати ефект інструкцій на Python. У деяких випадках це неможливо, оскільки Python не підтримує такі концепції, як непряма адресація. Псевдокод, що використовується в таких випадках, описаний на відповідній сторінці.

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

У наступних розділах детально описано підмножину набору інструкцій ARM Thumb-2, підтримувану MicroPython.

Приклади використання

Ці розділи містять додаткові приклади коду та поради щодо використання асемблера.

Посилання