TP3: Branchements et appels de fonction

Date limite: 28 février 2017 à 23h59

Ce travail pratique vaut 3% de la note totale du cours. À faire individuellement, il est à remettre au plus tard lundi le 28 février 2016 à 23h59.

Objectifs

Ce travail pratique vise les objectifs suivants:

  1. Comprendre comment sont effectués les transferts de programme d'une partie de la mémoire à une autre;
  2. Expérimenter avec l’appel de fonctions en assembleur ARM;
  3. Comprendre comment fonctionnent les branchements en assembleur ARM.

Préparation

Le simulateur ARM utilisé pour le TP3 est disponible en cliquant sur ce lien. Prenez un moment pour vous familiariser avec le simulateur avant de commencer le TP! Une lecture préalable du guide de l'utilisateur vous sera aussi fort utile.

Étapes

Ce TP s'effectue en deux étapes: 1) implémentation et 2) questionnaire, qui valent chacune 50% de la note totale.

Étape 1: implémentation (50%)

Vous devez tout d'abord implémenter la fonction CopieMemoire capable de copier un programme depuis une partie de la mémoire jusqu'à un autre emplacement. 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 le contrôle au système en faisant un branchement vers les instructions fraichement copiées.

La fonction CopieMemoire reçoit les paramètres suivants:

Votre fonction doit fonctionner correctement si R2 contient 0 (même si ça n’est pas le cas ici--testez-le!).

Votre code doit contenir au moins un commentaire toutes les trois lignes de code assembleur, qui décrit le fonctionnement de votre programme. Tout programme sans commentaire recevra la note de 0.

Important: votre fonction CopieMemoire ne doit pas modifier le contenu des registres. Cela inclut R0, R1, et R2, qui sont utilisés pour passer des arguments à la fonction, et tout autre registre du micro-processeur que vous déciderez d’utiliser. Indice : vous disposez d’une pile de 32 octets, elle pourrait vous être fort utile !

Lorsque vous avez terminé, téléchargez tout d'abord votre fichier asm.txt sur votre ordinateur grâce au bouton « télécharger » dans le simulateur, puis téléversez ce même fichier dans la boîte de dépôt qui est disponible sur le portail des cours.

Étape 2: questionnaire (50%)

Une fois votre fonction implémenté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.txt 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 code fourni. Contrairement au TP2, vous pouvez ajouter votre code sans craindre que cela n'affecte les réponses aux questions demandées.

Le questionnaire est disponible sur le portail des cours. N'oubliez pas de cliquer sur « soumettre »!

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 Piazza!

Liens importants

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. Finalement, merci à Marc-André Gardner et à Yannick Hold-Geoffroy pour le simulateur ARM! Merci à Jessica Déziel pour le design graphique.

Retour à la page web du cours.