initiation Assembleur
Plan du cours:
Objectifs du cours
Le powerPC G5
Exemples simples
Tableaux
Exercices
Passage de paramètres par adresse
Conventions de passage de paramètres
Utilisation de la pile
Objectifs du cours
-Montrer les différents éléments : jeu d’instruction registres, pointeurs, adressages,etc.
-Réalisation des opérations de haut niveau (boucles, décisions, sous-programmes) au moyen des instructions élémentaires de la machine.
-Conventions de passage des paramètres
-Aperçu des techniques d’optimisation (déroulage de boucle, etc.). Méthodologie de l’optimisation (recherche des parties couteuses, mesures et comparaisons).
Approche basée sur l’étude du code fabriqué par les compilateurs.
Le PowerPC G5
-Processeur RISC, 58M transistors, 66mm², fréq, horloge 1,8ghz avec unbe architecture supersclalaire (plusieurs calcule en parallel, décodage et exécution de la meme instruction en meme temps)
-32 registres banalisés de 64bits (+32 registres flottants de 64bits et registres spéciaux). Utilisé en 32 bits pour nos applications.
-Registre de condition de 32 bits ( bit de point fort est a droite! pour faire des test, des comparaisons (<,>,=....)), découpé en 8 sous-registres de 4bits.
La plupart des instructions arithmétiques et logiques se référent à 3 registres.
(Bit de point fort a gauche sauf pour le registre de condition)
exemple: add, r8,r4,r3
Un saut introduit une rupture dans la fille d’attente du pipline, car le processeur décode en meme temps d’éxécuter à la seul condition que les instructions se suivent.
Etude d’exemples simples
On ne regarde que des fonctions feuille, qui n’appellent pas d’autres fonctions.
Un calcul simple : le source C (foo.c)
int foo(int a, int b){ return a-b+42;
}
Traduction en langage d’assemblage
On demande la traduction pour un PowerPC604 32bits de ce programme foo.c en langage d’assemblage, grace à l’option -S de gcc, avec les optimisations maximum
gcc -mcpu=604