Вбудований асемблер для архітектур 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.
- 1. Інструкції переміщення регістрів
- 2. Завантаження регістра з пам’яті
- 3. Збереження регістра до пам’яті
- 4. Логічні та побітові інструкції
- 5. Арифметичні інструкції
- 6. Інструкції порівняння
- 7. Інструкції переходу
- 8. Збереження та відновлення стека
- 9. Різні інструкції
- 10. Інструкції з плаваючою комою
- 11. Директиви асемблера
Приклади використання¶
Ці розділи містять додаткові приклади коду та поради щодо використання асемблера.