TP ARM

 Introduction à l’environnement de travail
Exercice 1. Enregistrement d’un fichier et compilation
Enregistrement d’un fichier
Ouvrez une interface de commande (shell) et un éditeur de fichier (gedit) puis saisissez le programme suivant : .global .equ _start: tq: mov mov cmp beq add add b nop _start N, 12 r1, #0 r2, #1 r2, #N fin_tq r1, r1, r2 r2, r2, #1 tq ; ; ; ; (2) (3) (4) (1)

fin_tq: exit:

Enregistrez le fichier sur le disque, en le nommant TP1-EX1.s. Que réalise ce programme ?

Compilation
Lancez la compilation grâce aux commandes suivantes : $ arm-elf-as –gstabs TP1-EX1.s -o TP1-EX1.o32 La compilation consiste à transformer le texte assembleur en binaire exécutable par le processeur. L'option -gstabs permet d'inclure des informations pour déboguer le programme. Puis l'édition des liens : $ arm-elf-ld –Ttext=0x2000 TP1-EX1.o32 –o TP1-EX1.elf Le binaire obtenu après compilation n'est pas prêt à être exécuter tel quel car il manque des informations pour l'exécution. L'édition des liens construit le fichier binaire exécutable en ajoutant des informations comme -Ttext, adresse mémoire où le programme sera implanté.

Examen du fichier binaire
La ligne suivante permet d'afficher le contenu du fichier exécutable : $ arm-elf-objdump -d TP1-EX1.elf Dans l'affichage, on peut facilement reconnaître le programme compilé. Dans la colonne de gauche, on trouve l'adresse des mots mémoire contenant les instructions ; au milieu, on a le code hexadécimal de l'instruction et, à droite, l'instruction désassemblée. 1. Donnez la raison pour laquelle l'étiquette _start est à l'adresse 0x2000. 2. Trouvez l'adresse de l'étiquette tq.

Trouvez le code l'instruction et l'encodage de la constante #N. 8. On notera les points rouges. Licence 2e année . on arrêtera l'exécution après le second point d'arrêt qui marque la fin du programme : sur un programme réel. Déduisez l'adresse de l'étiquette de fin_tq. Quelle est le résultat de l’exécution du programme ? 2 . Manipulation du débogueur Lancement du débogueur et chargement du fichier Lancez le débogueur : $ arm-elf-insight & Ouvrez le fichier TP1-EX1. Définissez comme cible le simulateur intégré : menu file > Target Selection . encodée dans l'instruction.1L3IN3M Trouvez le code de l'instruction (1). 6. Calculez l'adresse du branchement (4) à partir de la constante c. Donnez la taille t des instructions de l'ARM. choisissez simulator. on aurait un appel pour la rendre la main au système. affichage des registres commande STEP prochaine instruction à exécuter (PC) points d'arrêt Exécution du programme pas à pas Lancez le programme (menu Run > Run) et exécutez le programme pas à pas (commande Step). 4. Exercice 2. qui causent la suspension de l'exécution du programme.elf : menu file > open et choisissez votre fichier.Université Paul Sabatier 3. 5. avec la formule suivante : adresse(4) + (1 + c) × t. De même. les points d'arrêt. dans la liste Target. Ouvrez la fenêtre des registres et vérifiez l’évolution des valeurs de r1 et r2. Trouvez le code de l'instruction (2) et l'encodage de la constante #1. 7.

grâce aux directives . 2. Modification Modifiez la valeur initiale contenue en mémoire dans N pour la remplacer par 10. et vérifiez. La seconde réserve 1 × 4 octets initialisés à 0 (c'est-à-dire un entier). Les deux variables seront définies comme des entiers. 1. Trouvez les adresses de N et Res. pour le résultat. 0 Ces deux lignes de code spécifient chacune une étiquette et une donnée à réserver dans la mémoire. Vérifiez le résultat dans la variable mémoire Res. 3. Compilez le programme ainsi modifié et examinez à nouveau l'exécutable produit avec la commande arm-elf-objdump.Université Paul Sabatier Licence 2e année .fill 12 1. 4. en ouvrant la fenêtre mémoire. Res.int .1L3IN3M Exercice 3. Modification du programme et gestion de la mémoire Modification du programme Modifiez le programme de manière à créer une variable mémoire pour N et une autre.int et fill : N: Res: . La première réserve de la place pour un entier initialisé à 12. qu’il contient bien le résultat escompté. Exécutez-le. Chargez-le dans le débogueur. Relancez le programme. 3 .

Sign up to vote on this title
UsefulNot useful