TP3: Branchements et appels de fonction

Date limite: 7 mars 2016 à 23h59

Ce travail pratique vaut 4% de la note totale du cours. À faire individuellement, il est à remettre au plus tard lundi le 7 mars 2016 à 23h59.

Objectifs

Ce travail pratique vise les objectifs suivants:

  1. Comprendre comment sont effectués les transferts de programme de la mémoire ROM à la mémoire RAM.
  2. Expérimenter avec l’appel de fonctions en assembleur ARM.
  3. Comprendre comment fonctionnent les branchements en assembleur ARM.

Préparation

Nous utiliserons l’outil « IAR Embedded Workbench » à nouveau pour ce travail pratique. Si vous n’êtes pas encore familier avec ce système, il vous sera bénéfique de consulter les notes pour le travail pratique 2.

De plus, allez dans Project -> Options -> Linker -> Checksum, cochez Fill unused code memory et inscrivez 0x10 dans la boîte End address.

Questionnaire

Ce TP, à la différence des deux premiers, s'effectue en deux étapes.

Premièrement, vous devrez coder une fonction capable de copier un programme depuis la mémoire ROM jusque dans la mémoire RAM. Cette opération est analogue à celle que fait votre ordinateur au démarrage, lorsqu'il copie d'abord une partie du système d'exploitation dans la RAM depuis votre disque dur, avant de laisser la main au système en opérant un saut dans les instructions fraichement copiées. Le fichier asm.s fourni contient plus de précisions quant à la tâche exacte qui vous est demandée dans cette étape.

Téléversez votre fichier asm.s qui contient votre réponse dans la boîte de dépôt qui est disponible dans la section « Évaluations et résultats » du portail des cours.

Deuxièmement, une fois cette fonction codée et testée, vous devez répondre à vingt (20) questions sur le portail des cours. Chacune de ces questions est associée à un commentaire dans le code asm.s fourni qui marque l'instruction, la déclaration ou la ligne sur laquelle porte la question. Attention de ne pas effacer ces commentaires en éditant le fichier asm.s fourni. Contrairement au TP2, vous pouvez ajouter votre code dans le fichier asm.s sans craindre que cela ne change les réponses aux questions demandées.

Ces questions sont disponibles dans la section « Questionnaires » du portail des cours.

La politique des retards mentionnée dans le plan de cours sera appliquée. Comme il y a un fichier à téléverser et des questions à répondre, la date la plus tardive d'entre les deux sera utilisée pour le calcul des retards. Pour toutes questions concernant la procédure de remise ou le travail lui-même, posez vos questions sur le forum!

Informations utiles

Ce fichier d'information sur les instructions ARM pourrait vous être très utile.

Le logiciel « IAR Embedded Workbench » vous permet de voir la mémoire de votre système lors de l’exécution de votre programme. Pour ce faire, une fois que le programme est lancé, faites apparaitre la mémoire en allant dans le menu View -> Memory. Dans ce panneau, dans la case GoTo, vous pouvez inscrire l’adresse de l’emplacement mémoire désiré (voir illustration ci-dessous). Dans l’exemple ci-dessous, l’adresse a été entrée en hexadécimale.

Il est possible aussi de mettre des points d'arrêt (« breakpoints ») dans la mémoire pour que l’exécution s’interrompe lorsque le PC arrive à l’adresse mémoire désignée par le point. Pour ce faire, lorsque le programme s’exécute, il faut ouvrir le panneau de « disassembly » en allant dans le menu View -> Disassembly. Dans ce panneau, on peut utiliser la case GoTo comme dans l’exemple précédent pour aller à l’emplacement mémoire désiré. Une fois qu’on y est, on peut assigner un « breakpoint » à un emplacement arbitraire dans la mémoire en double-cliquant dans la marge à côté de la plage désiré. Un point rouge apparaitra pour indiquer la présence du « breakpoint » (voir la figure ci-dessous). C’est d’ailleurs par cette méthode que vous serez en mesure de vérifier l’exécution de votre programme une fois qu’il aura été mis en mémoire RAM.

Ressources

Remerciements

Merci à Étienne Tremblay d'avoir créé le TP original qui a servi d'inspiration pour celui-ci. Merci à Marc-André Gardner pour l'élaboration de la version "ENA" du TP!

Retour à la page web du cours.