assembleur LC-3

publicité
Université Paris Diderot - M1
Année 20132014
Circuits et Architecture TD n◦ 7
assembleur LC-3
On va utiliser un sous-ensemble de l'assembleur LC-3 que vous avez vu en cours. Il est composé
des instructions ADD, AND, BR, JMP, LDR, NOT, STR.
Exercice 1
Comment initialiser un registre à la valeur zéro ? Donner l'instruction assembleur puis son
codage hexadécimal.
Exercice 2
Comment mettre une constante, par exemple 2007, dans un registre ? Donner l'instruction
assembleur puis son codage hexadécimal.
Exercice 3
Avec la technique précédente, combien d'instructions sont nécessaires pour une constante
arbitraire sur 16 bits ? Quelle autre technique peut-on utiliser ?
Exercice 4
Avec les instructions dont on dispose, donner toutes les façons de coder l'instruction NOP.
Exercice 5
Programmer une séquence de boot qui remet à zéro les registres et (une partie de) la mémoire.
Exercice 6
Programmer la soustraction, c'est-à-dire une séquence qui code R2 ← R0 − R1.
Exercice 7
Faites un programme qui calcule les 12 premiers termes de la suite de Fibonacci grâce à une
boucle.
Exercice 8
On souhaite programmer la somme d'un tableau. L'adresse du début du tableau est stockée
dans R0 et la somme doit être calculée dans R1. On suppose qu'on peut modier tous les registres.
Programmer la somme d'un tableau si :
1. on suppose que la n du tableau est marquée par un octet nul,
2. on suppose que la taille du tableau est stockée dans R2.
1
On désire maintenant implémenter le changement de contexte, an de pouvoir faire des appels
de fonctions et (en exagérant un peu...) du multitâches.
Dans ce but, nous allons implémenter une pile en mémoire. Par convention, (aujourd'hui)
M em[0] est le sommet de pile (adresse de la première case vide), la première case de la pile est
M em[1], la seconde M em[2]... jusqu'à M em[M em[0]]. La pile grandit donc vers le haut.
Exercice 9
Programmer la sauvegarde du contexte, c'est-à-dire le fait de placer sur la pile les 7 registres
R1, R2, . . . , R7.
Pourquoi ne peut-on pas sauvegarder les 8 registres dans la pile ?
Exercice 10
Programmer la restauration du contexte : les 7 registres R1, R2, . . . , R7 doivent reprendre
leurs valeurs initiales.
2
Téléchargement