:: Enseignements :: Licence :: L3 :: 2006-2007 :: Architecture des ordinateurs ::
[LOGO]

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.