les instructions. 1 Le jeu d’instructions MIPS Nous allons voir le langage de l

les instructions. 1 Le jeu d’instructions MIPS Nous allons voir le langage de la machine : Les opérations du matériel de l’ordinateur Les opérandes du matériel de l’ordinateur La représentation des instructions dans l’ordinateur Des instructions pour prendre des décisions 19/10/2012 12:39 1 I.Abdesslem les instructions. 2 Les opérations du matériel de l’ordinateur Tout ordinateur doit être capable d’effectuer des opérations arithmétiques. La notation MIPS chaque instruction arithmétique MIPS doit toujours avoir trois variables. add a,b,c 19/10/2012 12:39 2 I.Abdesslem les instructions. 3 Les opérandes du matériel de l’ordinateur Les opérandes des instructions arithmétiques doivent provenir d’un nombre limité d’emplacements particuliers appelés registres. La taille d’un registre dans l’architecture MIPS est de 32 bits MIPS possède 32 registres, notés $0, $1, ...,$31 Les registres sont plus rapide que la mémoire Les registres sont plus facile à utiliser pour le compilateur Les registres peuvent contenir des variables Réduction trafic mémoire 19/10/2012 12:39 3 I.Abdesslem les instructions. 4 Les opérandes du matériel de l’ordinateur 4 230octet mémoire 31 registres 32 bits + R0=0 HI, LO, CP … R1 R31 CP LO HI R0 0 19/10/2012 12:39 I.Abdesslem les instructions. 5 Les registres du MIPS Le MIPS comporte 32 registres généraux interchangeables, sauf : le registre zéro qui vaut toujours 0, même après une écriture. Le registre ra, utilisé implicitement par certaines instructions pour sauver l'adresse de retour avant un saut. Les autres registres ont des utilisations préférentielles, mais cela n'est strict que pour communiquer avec d'autres programmes(exemple: utiliser des programmes en librairies). 19/10/2012 12:39 I.Abdesslem 5 les instructions. 6 Les registres du MIPS Nom Numéro Usage zero 0 Zéro (toujours) at 1 Réservé par l'assembleur v0 .. v1 2 .. 3 Retour de valeurs a0 .. a3 4 .. 7 Passage d'arguments t0 .. t7 8 .. 15 Temporaires non sauvegardés s0.. s7 16 .. 23 Temporaires sauvegardés t8.. t9 24 .. 25 Temporaires non sauvegardés k0.. k1 26 .. 27 Réservés par le système gp 28 Global Pointer sp 29 Stack Pointer fp 30 Frame Pointeur ra 31 Return Address 19/10/2012 12:39 I.Abdesslem 6 les instructions. 7 Exemple add $8,$17,$18 #Registre $8 contient g+h add $9,$19,$20 #Registre $9 contient i+j sub $16,$8,$9 # f reçoit $8-$9, ou (g+h)-(i+j) f=(g+h)-(i+j); Les variables f,g,h,i et j peuvent être assignées aux registres $16, $17,… $20. C’est au compilateur que revient cette tâche délicate. 19/10/2012 12:39 7 I.Abdesslem les instructions. 8 Les opérandes du matériel de l’ordinateur 8 Beaucoup de programmes ont plus de variables que les machines n’ont de registres. Par conséquent, le compilateur cherche à conserver dans les registres les variables les plus souvent utilisées et place le reste en mémoire. Les structures de données comme les tableaux sont donc stockées en mémoire 19/10/2012 12:39 I.Abdesslem les instructions. 9 Les opérations arithmétiques n’ont lieu que dans les registres. MIPS doit donc disposer d’instructions qui transfèrent les données entre la mémoire et les registres. Processeur Processeur Mémoire Mémoire Load Store Les opérandes du matériel de l’ordinateur 19/10/2012 12:39 9 I.Abdesslem les instructions. 10 Depuis 1980 toutes les machines utilisent des adresses au niveau de l’octet (8 bits) Processeur Processeur Adresse 0 4 8 12 ... Donnée 10 45 8456666 0 ... Les opérandes du matériel de l’ordinateur Puisque on peut lire un mot de 32 bits comme 4 octets en un seul coup, comment ces octets sont ranger dans le mot ? 19/10/2012 12:39 10 I.Abdesslem les instructions. 11 Les opérandes du matériel de l’ordinateur 11 Big-endian: l’adresse de l’octet le plus significatif est l’adresse du mot Little-endian: l’adresse l’octet le moins significatif est l’adresse du mot Numéro d’octet Numéro d’octet 0 1 2 3 3 2 1 0 Motorolla, MIPS, SPARC Intel 8086, VAX, Alpha 19/10/2012 12:39 I.Abdesslem les instructions. 12 Transfert de donnée Chargement mot : lw $1,100($2) $1 = Mémoire[$2+100] Rangement mot : sw $1,100($2) Mémoire[$2+100] = $1 19/10/2012 12:39 12 I.Abdesslem les instructions. 13 Exemple T[i]=h+T[i] ; T est un tableau d’entiers. On suppose que la variable h est dans $18. $19 contient la valeur i, et que le tableau débute à l’adresse Tstart muli $19,$19,4 #i=i*4 lw $8,Tstart($19) #reg temporaire $8 reçoit T[i] add $8,$18,$8 #reg temporaire $8 reçoit h+T[i] sw $8,Tstart($19) #on recopie h+T[i]dans T[i] 19/10/2012 12:39 13 I.Abdesslem les instructions. 14 Branchement conditionnel branchement si égal beq $1,$2,L si ($1==$2) aller en L branchement si non égal : bne $1,$2,L si ($1!=$2) aller en L les instructions. 15 Exemple bne $19,$20,Else # aller en Else si i¹j add $16,$17,$18 # f=g+h j Exit # aller en Exit Else:sub $16,$17,$18 # f=g-h Exit: if (i==j) f=g+h; else f=g-h; f,g,h,ietj correspondent aux registres $16 à $20 les instructions. 16 Exemple loop : mult $9,$19,$10 #reg temporaire $9=i*4 lw $8,Sstart($9) #reg temporaire $8=stock[i] bne $8,$21,Exit #aller en Exit si stock[i]¹k add $19,$19,$20 #i=i+j j Loop #aller en Loop Exit: While (stock[i]==k) i=i+j; i,j et k correspondent aux registres $19 à $21, le tableau stock débute à Sstart, le registre $10 contient la valeur 4; les instructions. 17 Le format des instructions Nous donnons des noms aux champs MIPS pour faciliter leur description • op : opération correspondant à l’instruction • rs : le premier registre opérande source • rt : le second registre opérande source • rd : le registre opérande destination ; il reçoit le résultat de l’opération • decval : valeur du décalage • fonct : fonction ; ce champ détermine la variante de l’opération décrite dans le champ op 31-26 25-21 20-16 15-11 10-6 5-0 decval fonct rd rt rs 0p 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits les instructions. 18 Le format des instructions 0 34 1 3 2 0 Instruction de type R 31-26 25-21 20-16 15-11 10-6 5-0 decval fonct rd rt rs 0 Exemples : Sub $1,$2,$3 signification $1=$2-$3 0 32 1 3 2 0 add $1,$2,$3 signification $1=$2+$3 les instructions. 19 Le format des instructions 100 1 2 43 31-26 25-21 20-16 15-0 Instruction de chargement ou de rangement adresse rt rs 35ou43 Sw $1,100($2) signification : Mémoire($2+100)=$1 Exemples : 100 1 2 35 lw $1,100($2) signification : $1=Mémoire($2+100) Instruction de type I 6 bits 5 bits 5 bits 16 bits les instructions. 20 Le format des instructions 2 1 5 100 31-26 25-21 20-16 15-0 Instruction de branchement rt rs 4 ou 5 adresse bne $1,$2,100 signification : si ($1¹$2) aller en 100 Exemples : 2 1 4 100 beq $1,$2,100 signification : si ($1=$2) aller en 100 les instructions. 21 26 bits • Instruction type J op adresse 6 bits J 2000 Exemple : op Address destination op rs rt rd decval funct 0 6 11 16 21 26 31 op rs rt immediate R-type I-type J-type add, sub ori, lw, sw, beq j, jal Différents formats d’instructions MIPS 26 bits 2 2000 6 bits Le format des instructions les instructions. 22 1. Adressage par registre op rs rt rd decval funct 0 6 11 16 21 26 31 registre 2. Adressage indexé op rs rt adresse registre + Mémoire Add $4,$2,$3 Opérande est un registre Opérande se trouve à l’emplacement mémoire lw $1,100($2) Modes d’adressage les instructions. 23 3. Adressage immédiat 4. Adressage relatif à CP op rs rt adresse CP + Mémoire Opérande constante bne $1,$2,100 5 bits 5 bits 16 bits op rs rt immédiat 6 bits addi $1,$2,100 Nombre de mots qui séparent l ’instruction de branchement de l ’instruction cible Modes d’adressage les instructions. 24 L’utilisation de la mémoire Conventions adoptées sur un système MIPS : Segment de texte (détient les instructions du programme) Segment de données Segment de pile Il se situe au sommet de l’espace adressable. Lorsque le programme dépose des valeurs sur la pile, le système d’exploitation étend le segment de pile vers le bas. les instructions. 25 L’utilisation de la mémoire Réservé 7 f f f f f f f 10000000 00400000 Segment de pile Segment de données Segment de texte les instructions. 26 Procédure A Procédure B Procédure C Éditeur de liens 0: procédure A 64: procédure B 112:procédure C Appel de procédure. Retour à l’instruction qui suit l’appel. Passage des paramètres Imbrication des procédure Traitement des procédures les instructions. 27 Instruction jal (saut avec lien) jal AdresseProcedure Ä L’Adresse de retour est rangé dans $31. Le retour est effectue par l’instruction : jr $31 CP: compteur de programme $31 Cas plus compliqué lorsque une procédure appelle une autre procédure Ä Vidée les registre $31 dans la mémoire Traitement des procédures les instructions. 28 Les appels de procédures Void procA(){ procB(); } Void procB(){ procC(); } les instructions. 29 Appels et retours procA procB procC Retour Retour les instructions. 30 Les appels de procédures jal AdresseProcedure : Affecte un saut à une adresse donnée en sauvegardant l’adresse de l’instruction suivante dans le registre $31 jr $31 Instruction qui fait un saut de retour Void procA(){ procB(); } Void procB(){ procC(); } les instructions. 31 Sauvegarde et restitution de l’adresse de retour $31 procA:... ... jal procB ... procB:... ... addi $29,$29,-4 sw $31,0($29) jal procC uploads/Industriel/ chap2-2mipsisa.pdf

  • 70
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager