initiation Assembleur

Pages: 15 (3172 mots) Publié le: 25 avril 2015
Initiation à la programmation en langage d’assemblage



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, 58Mtransistors, 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, descomparaisons (<,>,=....)), 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 sesuivent.


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 -S -O foo.c



Ce qui donne le fichier assembleur foo.s
Cette commande est lancée sur la machine de modéle iMax, dotée d’un processeur G5, de 512Mo de RAM et de nom euphor. On accéde a euphor par une connexion sécurisée (ssh)


Le code en langage d’assemblage (foo.s) :
.section __TEXT,...
....
....
.align 2
....
.global __foo
.section __TEXT,...
.align 2
__foo:
subf r4,r4,r3
addir3,r4,42 //addi i signifie immediat car 42 sera une addition immédiate
blr // (Branch Link Register) return....

Lorsqu’on appele un sous programme ou une fonction l’adresse dans laquel on appele cette fonction est sauvegarder dans le registre de lien, le registre de lien sauvegarde l’adresse de retour du programme appelant.

Les parametre d’entrée a,b,c,d sont stocké respectivement dans lesregistre r3,r4,r5,r6......registre renvoyé lors du return est r3.


Etude d’exemples simples (commençons par la fin...)

L’instruction blr (Branch to link register) fait revenir à la fonction appelante. Celle-ci, lors de l’appel de foo, a mis l’adresse de retour dans le registre de liens, blr copie cette adresse dans le registre pointeur de programme (compteur ordinal).


L’instruction addi r3,R4,42additionne la valeur 42 au contenu du registre R4, et place le résultat dans R3. Par convention, c’est dans le registre R3 qu’une fonction doit placer la valeur retournée.
C’est une addition avec une «valeur immédiate » : en effet dans l’instruction 42 n’est pas le numéro d’un registre, mais une valeur qui est utilisée telle quelle.


Subf est une soustraction (substract from) entre registre« R4<- (R3) – (R4) » (attention à l’ordre). A l’entrée de la fonction foo les paramétres a et b sont donc recus respectivement dans R3 et R4.
Remarque : cette instruction est aussi connue sous le nom de code : « sf » : )




Plus.s :

Addi R3 ,R3,1
Blr



Moins.s :

Li R4,1 ; // 1 dans R4
Subf R3, R4, R3 ;
Blr

2em version

Neg R4,1 // -1 dans R4
Add R3,R4,R3
blr







Etude d’exemples simples...
Lire le document complet

Veuillez vous inscrire pour avoir accès au document.

Vous pouvez également trouver ces documents utiles

  • Assembleur
  • assembleur
  • Assembleurs
  • Initiation
  • Initiation
  • Initiations
  • Initiation
  • assembleur 6809

Devenez membre d'Etudier

Inscrivez-vous
c'est gratuit !