Académique Documents
Professionnel Documents
Culture Documents
Les instructions
Les pseudo-instructions
Structures d’un programme assembleur
Les directives d’assemblage
Une directive d’assemblage n’est pas une instruction ARM mais une
commande adressée à l’assembleur.
Une directive d’assemblage ne génère pas de code machine.
Exemple :
const equ 0x1234
………
mov R1, #const ; R1 contiendra 0x1234
Directives d’assemblage
AREA
Exemple :
AREA Programme,CODE,READONLY ; section de code à lecture seule
… (instructions)
…
…
EXPORT : Déclare un symbole comme étant global. Il est référencé (utilisé) dans un
autre fichier
IMPORT: Déclare un symbole comme étant externe. Il est définit dans un autre
fichier
END : Informe l’assembleur de la fin du programme source. Chaque fichier doit
se terminer par un end
Les instructions
Contrairement aux directives, les instructions seront traduites en langage machine
Toutes les instructions ont une taille de 32 bits
Toutefois, le format de l’instruction diffère d’un type à un autre
0xFF000000 est donc écrit sous forme de 0xFF décalé circulairement à droite de 8
bits donc rotate = 4
31 27 27 25 24 21 19 16 15 12 11 8 7 0
Remarque
Si le deuxième opérande est décalé, shift indiquera le sens de décalage et
shift_amount indiquera la valeur de décalage
0xE0821223
Exercice
Soit le programme assembleur suivant:
area Demo, code, readonly
export __main
chaine dcb "salut"
align 4
entry
__main mov R0, #10
mov R1, #20
add R2, R1, R0
end
Elles sont interprétées par l’assembleur comme c’est le cas pour les directives et
permettent de faciliter la programmation
Contrairement à une directive, une pseudo-instruction donne lieu à une ou
plusieurs instructions ARM et éventuellement des réservations supplémentaires de
données en mémoire
Ldr R0, =x ; x est une étiquette déclarée dans n’importe quel espace adressable
Charger l’adresse X dans un registre de base. Elle génère un ldr d’une constante
mémoire contenant l’adresse de x
Ldr R0, =x Ldr R0, [PC, #-0x04]
(DCD adresse_de_x)
Exercice
Quelles sont les instructions et les données générées par l’assembleur ARM pour
le code suivant