Assembleur en ligne pour les architectures Thumb2

Ce document suppose une certaine familiarité avec la programmation en langage d’assemblage. Pour une description concise du jeu d’instructions, consultez la fiche de référence rapide « ARM Thumb-2 Instruction Set Quick Reference Card » sous References ci-dessous. L’assembleur en ligne prend en charge un sous-ensemble du jeu d’instructions ARM Thumb-2 décrit ici. La syntaxe tente d’être aussi proche que possible de celle définie par ARM, convertie en appels de fonctions Python.

Les instructions opèrent sur des données entières signées de 32 bits sauf indication contraire. La plupart des instructions prises en charge n’opèrent que sur les registres R0-R7 : lorsque R8-R15 sont pris en charge, cela est indiqué. Les registres R8-R12 doivent être restaurés à leur valeur initiale avant le retour d’une fonction. Les registres R13-R15 constituent respectivement le registre de lien (Link Register), le pointeur de pile (Stack Pointer) et le compteur de programme (Program Counter).

Conventions du document

Lorsque c’est possible, le comportement de chaque instruction est décrit en Python, par exemple

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

Cela permet de démontrer l’effet des instructions en Python. Dans certains cas, c’est impossible parce que Python ne prend pas en charge des concepts tels que l’indirection. Le pseudocode employé dans de tels cas est décrit sur la page correspondante.

Catégories d’instructions

Les sections suivantes détaillent le sous-ensemble du jeu d’instructions ARM Thumb-2 pris en charge par MicroPython.

Exemples d’utilisation

Ces sections fournissent d’autres exemples de code et des conseils sur l’utilisation de l’assembleur.

Références