:: Enseignements :: Licence :: L3 :: 2006-2007 :: Architecture des ordinateurs ::
| Programmes simples en DLX |
Cette séance de travaux dirigés est consacrée à l'étude d'exemples
de programmes assembleurs. On travaillera sur le processeur virtuel DLX
décrit dans
John.-L. Hennessy et
David.-A. Patterson,
Architecture des Ordinateurs, une approche quantitative, chez
International Thomson Publishing, Paris, 1996 (voir feuille annexe pour le jeu
d'instructions).
Exercice 1 - Comptage du nombre de bits
Dans de nombreux microprocesseurs actuels, il n'y a pas d'instruction pour
compter le nombre de bits à 1 (distance de Hamming) d'une suite de $2^n$
bits.
- Proposer en pseudo-code un algorithme qui simule cette instruction à l'aide
d'une boucle.
En fait, il est possible de le faire beaucoup plus rapidement, à l'aide de
masques et d'additions:
- Que se passe-t-il si l'on exécute l'instruction C suivante :
R = (x & 0x5555) + ((x & 0xAAAA) >> 1) ;
- En déduire un programme C qui compte le nombre de bits à 1 d'une
variable x entière (16 bits).
- Traduire ce programme en assembleur DLX en supposant que x est disponible
à l'adresse mémoire 2020 et que l'on veut stocker le résultat à l'adresse mémoire
3030.
© Université de Marne-la-Vallée