Vous aurez besoin pour ce projet d'une machine avec un processeur de la famille x86 et d'un environnement de développement comprenant GCC.
Vous devez tout d'abord récupérer l'archive compressée de ce projet et la décompresser à l'endroit de votre choix. Cette archive contient un répertoire optimisation
contenant les fichiers suivants:
main.c transfo.c
ainsi qu'un sous-répertoire data
contenant les fichiers:
image.pgm image2.pgm image3.pgm courbe.pgm courbe2.pgm courbe3.pgm res.pgm res2.pgm res3.pgm
Pour construire un exécutable s'appelant transfo
, en utilisant la version C (transfo.c) placez vous dans le répertoire optimisation
et tapez la commande :
gcc -o transfo transfo.c main.c
Pour construire un exécutable transfo
, en utilisant la version assembleur (transfo.s) placez vous dans le
répertoire optimisation
et tapez la commande :
gcc -o transfo transfo.s main.c
Pour générer un code assembleur depuis une version C et ensuite travailler sur cette version assembleur, il faut taper (pour obtenir transfo.s
):
gcc -S transfo.c
Le but de ce projet est d'optimiser le code assembleur transfo.s
et/ou transfo.c
afin que les appels au programme avec les paramètres suivants :
./transfo data/image.pgm data/courbe.amp output.pgm ./transfo data/image2.pgm data/courbe2.amp output2.pgm ./transfo data/image3.pgm data/courbe3.amp output3.pgm
affichent le nombre de cycles machine consommés les plus petits possibles.
Vous devrez donc transformer le code assembleur transfo.s
et/ou transfo.c
afin de le rendre le plus efficace possible. Vous pouvez faire toutes les
transformations que vous voulez et utiliser toutes les instructions que vous
voulez, mais vos transformations doivent préserver le résultat du programme.
Il est à noter que lors de l'évaluation du projet votre
programme sera éventuellement testé avec un autre fichier
'image4
', ce qui vous empêche de faire un programme spécialisé
qui se contenterait de produire un résultat sans aucun calcul.
Vous pouvez vérifier que votre résultat est correct avec :
diff data/res.pgm output.pgm diff data/res2.pgm output2.pgm diff data/res3.pgm output3.pgm
Vous n'avez pas le droit de modifier main.c
. Vous pouvez faire
appel à d'autre bibliothèques si vous le désirez. Vous pouvez également
ajouter des fichiers sources...
La date limite de remise de votre projet est le 14 janvier 2011 à 23h59. Vous devez me rendre pour cette date :
Il est à noter que ce projet est strictement personnel, même si il est bien entendu qu'il n'est pas interdit d'échanger des idées !