11. Directives d’assembleur¶
11.1. Étiquettes¶
label(INNER1)
Ceci définit une étiquette à utiliser dans une instruction de branchement. Ainsi, ailleurs dans le code, un b(INNER1) fera reprendre l’exécution à l’instruction qui suit la directive d’étiquette.
11.2. Définir des données en ligne¶
Les directives d’assembleur suivantes facilitent l’intégration de données dans un bloc de code assembleur.
data(size, d0, d1 .. dn)
La directive data crée un tableau de valeurs de données en mémoire. Le premier argument spécifie la taille en octets des arguments suivants. Ainsi, la première instruction ci-dessous fera placer par l’assembleur trois octets (de valeurs 2, 3 et 4) dans des emplacements mémoire consécutifs, tandis que la seconde lui fera émettre deux mots de quatre octets.
data(1, 2, 3, 4)
data(4, 2, 100000)
Les valeurs de données plus longues qu’un seul octet sont stockées en mémoire au format petit-boutiste (little-endian).
align(nBytes)
Aligne l’instruction suivante sur une valeur de nBytes. Les instructions ARM Thumb-2 doivent être alignées sur deux octets, il est donc conseillé d’émettre align(2) après les directives data et avant tout code subséquent. Cela garantit que le code s’exécutera quelle que soit la taille du tableau de données.