Oprations sur les donnes Laurent JEANPIERRE jeanpliutc 3









































- Slides: 41

Opérations sur les données Laurent JEANPIERRE <jeanpl@iutc 3. unicaen. fr> D’après le cours de Pascal FOUGERAY IUT de CAEN – Campus 3 Département Informatique

Contenu du cours l l Unité Arithmétique et Logique (UAL/ALU) l Opérations arithmétiques l Opérations binaires Unité Flottante (FPU) l Opérations de transfert l Opérations arithmétiques l Opérations de comparaison l Opérations de trigonométrie Département Informatique 2

L’UAL : Introduction l Unité Arithmétique et Logique (ALU) l Se charge des calculs l Utilise les registres Généraux : EAX, EBX, ECX, EDX, ESI, EDI l Pointeurs : ESP, EBP l l Existe en 2 exemplaires Depuis le 80486 l Permet les calculs en parallèle l Département Informatique 3

Contenu du cours l l Unité Arithmétique et Logique (UAL/ALU) l Opérations arithmétiques l Opérations binaires Unité Flottante (FPU) l Opérations de transfert l Opérations arithmétiques l Opérations de comparaison l Opérations de trigonométrie Département Informatique 4

UAL : Arithmétique l Additions : l l Soustractions : l l add s, d : d d + s adc s, d : d d + s + C (bit de retenue) inc d : d d + 1 sub s, d : d d – s sbb s, d : d d – s – C (bit de retenue) dec d : d d – 1 Negation : l neg d : d -d Département Informatique 5

UAL : Arithmétique (2) l Multiplications non signées : mulb v : AX AL * v l mulw v : EAX AX * v l mull v : EDX: EAX * v l l Multiplications signées : imulb v : AX AL * v l imulw v : EAX AX * v l imull v : EDX: EAX * v l Département Informatique 6

UAL : Arithmétique (3) l Divisions non signées : divb v : AL AX / v, AH = Reste l divw v : AX EAX / v, DX = Reste l divl v : EAX EDX: EAX / v, EDX = Reste l l Divisions signées : idivb v : AL AX / v, AH = Reste l idivw v : AX EAX / v, DX = Reste l idivl v : EAX EDX: EAX / v, EDX = Reste l l Attention : Diviser par 0 déclenche l’interruption logicielle n° 0 (division /0) Département Informatique 7

UAL : Arithmétique (4) l Décalages non signés : l l l shl v, 1 : v v * 2 shl v, $n : v v * 2 n, n sur 8 bits shl v, %CL : v v * 2 CL C l l l 0 7 7 6 5 4 3 2 1 0 0 shr v, 1 : v v / 2 shr v, $n : v v / 2 n, n sur 8 bits shr v, %CL : v v / 2 CL 6 5 4 3 2 Département Informatique 1 0 C 8

UAL : Arithmétique (5) l Décalages signés : l l l sal v, 1 : v v * 2 sal v, $n : v v * 2 n, n sur 8 bits sal v, %CL : v v * 2 CL C l l l 7 7 6 5 4 3 2 1 0 0 sar v, 1 : v v / 2 sar v, $n : v v / 2 n, n sur 8 bits sar v, %CL : v v / 2 CL 6 5 4 3 2 Département Informatique 1 0 C 9

Contenu du cours l l Unité Arithmétique et Logique (UAL/ALU) l Opérations arithmétiques l Opérations binaires Unité Flottante (FPU) l Opérations de transfert l Opérations arithmétiques l Opérations de comparaison l Opérations de trigonométrie Département Informatique 10

UAL : Opérations binaires l Rotations l : rol : C 7 l ror : 7 6 6 5 5 4 4 3 3 2 Département Informatique 2 1 1 0 0 C 11

UAL : Opérations binaires (2) l Rotations l à travers la retenue : rcl : C 7 l rcr : 7 6 6 5 5 4 4 3 3 2 Département Informatique 2 1 1 0 0 C 12

UAL : Opérations binaires (3) l Opérations l and s, d : d d ET s l l : d d OU s orw $0 x 0 F 00, %bx # positionne les bits 8 -11 xor s, d : d d OU_EXCLUSIF s l l andb $0 b 00001000, %al # isole le bit 3 de AL or s, d l l bit à bit xorb $0 b 1111, %al not d l # inverse les bits 0 -3 : d NON d notl %ecx # inverse chaque bit de ECX Département Informatique 13

Contenu du cours l l Unité Arithmétique et Logique (UAL/ALU) l Opérations arithmétiques l Opérations binaires Unité Flottante (FPU) l Opérations de transfert l Opérations arithmétiques l Opérations de comparaison l Opérations de trigonométrie Département Informatique 14

L’unité flottante : introduction Unité de calcul flottant (FPU) l Accélère les calculs en virgule flottante l Dispose de : l l l Ses propres instructions Ses propres registres Sa propre ligne d’interruption (matérielle) Son propre séquenceur (exécution // processeur) Existe en deux exemplaires l l Depuis le Pentium Pro Calculs parallèles Département Informatique 15

FPU : Registres l 8 registres de travail st ou st(0), st(1). . st(7) l Sur 80 bits, avec 64 bits de mantisse l Organisés en pile : dernière valeur lue = st l l Registre d’état (16 bits) l Registre de contrôle (16 bits) l Registres à usage interne Tag Word (16 bits) l Instruction/Operand Pointer (2 x 48 bits) l Département Informatique 16

FPU : Données recevables Lors des échanges avec le processeur : Donnée Bits Possibilités Entier word 16 -32768 à 32767 Entier court 32 -2. 109 à +2. 109 Entier long 64 -9. 1018 à +9. 1018 Réel court 32 ± 8, 43. 10 -37 à 3, 37. 1038 Réel long 64 ± 4, 19. 10 -307 à 1, 67. 10308 Réel temporaire 80 ± 3, 4. 10 -4392 à 1, 2. 104932 BCD 80 ± 999 999 999 Département Informatique 17

FPU : Réels spéciaux l Normalement 1 réel = Signe : 1 bit l Exposant : 15 bits, biaisé (+32767) l Mantisse normalisée : 64 bits (1, xxxx…xxxx) l l Zero = 0/1 0… 0 : +0 ou -0 l Infini = 0/1 1… 1 10… 0 : +∞ ou -∞ l Na. N = 0/1 1… 1 *…* Mantisse ≠ 10… 0 l Not a Number : une erreur s’est produite exemple : division par 0 l Département Informatique 18

FPU : Instructions Environ 90 instructions ≠ : l Transfert de données l Lecture/écriture/échange l Opérations l +, -, *, /, exp, log, √, mod, abs l Opérations l trigonométriques sin, cos, tan, atan l Opérations l arithmétiques de contrôle init, nop, save/restore + registres spéciaux Département Informatique 19

FPU : instructions (2) l Format des instructions : Lettre « f » l Mnémonique FPU l Taille d’opération (sauf entre registres) l l Tailles d’opérations : S : flottant 32 bits / entier 16 bits l L : flottant 64 bits / entier 32 bits l T : flottant 80 bits l Q : entier 64 bits l Département Informatique 20

Contenu du cours l l Unité Arithmétique et Logique (UAL/ALU) l Opérations arithmétiques l Opérations binaires Unité Flottante (FPU) l Opérations de transfert l Opérations arithmétiques l Opérations de comparaison l Opérations de trigonométrie Département Informatique 21

FPU : Opérations de transfert l Empiler une valeur : fld : un réel l fild : un entier l fbld : un BCD l l Dépiler une valeur fstp : un réel l fistp : un entier l fbstp : un BCD l Département Informatique 22

FPU : Opérations de transfert (2) l Lire une valeur (sans dépiler) fst : un réel l fist : un entier l l Échanger deux registres fxch : échange st(1) et st(0) l fxch st(i) : échange st(i) et st(0) l Département Informatique 23

FPU : Opérations de transfert (3) l Empiler une constante : fldz : +0 l fld 1 : +1 l fldpi : +π l fldl 2 t : +log 2 10 l fldl 2 e : +log 2 e l fldlg 2 : +log 10 2 l fldle 2 : +ln 2 l Département Informatique 24

Contenu du cours l l Unité Arithmétique et Logique (UAL/ALU) l Opérations arithmétiques l Opérations binaires Unité Flottante (FPU) l Opérations de transfert l Opérations arithmétiques l Opérations de comparaison l Opérations de trigonométrie Département Informatique 25

FPU : Arithmétique l fadd : addition faddl v 1 : st + v 1 (double, 64 bits) l fadds v 1, st(1) : st(1) + v 1 (float, 32 b) l fadd st, st(2) : st + st(2) l l faddp : addition + dépile ST(0) 3. 14159 ST(1) 1. 0 ST(0) 4. 14159 faddp ST(2) 18. 0 ST(1) 18. 0 ST(2) ? ? ? Département Informatique 26

FPU : Arithmétique (2) l fiadd : addition avec un entier faddl v 1 : st + v 1 (32 bits) l faddq v 1, st(1) : st(1) + v 1 (64 bits) l l fsub(p), fsubr(p) : soustraction fsub v 1 : st – v 1 l fsub st, st(1) : st(1) – st l fsubr st, st(1) : st(1) st – st(1) l fsubp : remplace st, st(1) par st-st(1) l fsubrp : remplace st, st(1) par st(1)-st l Département Informatique 27

FPU : Arithmétique (3) l fisub, fisubr : soustraction avec un entier fisubs v 1 : st – v 1 (16 bits) l fisubrl v 1 : st(1) v 1 (32 bits) – st(1) l l fmul, fmulp, fimul : multiplication fmul st(1), st(2) : st(2) * st(1) l fmult v 1 : st * v 1 (réel 80 bits) l fmulp : remplace st, st(1) par st*st(1) l fimulq v 2, st(3) : st(3) * v 2 (entier 64 b) l Département Informatique 28

FPU : Arithmétique (4) l fdiv, fdivp, fidiv : division fdiv st(1), st(2) : st(2) / st(1) l fdivl v 1 : st / v 1 (réel 64 bits) l fdivp : remplace st, st(1) par st/st(1) l fidivl v 2, st(3) : st(3) / v 2 (entier 32 b) l l fdivr, fdivrp, fidivr : division inversée fdivr st(1), st(2) : st(2) st(1) / st(2) l fdivrl v 1 : st v 1 (réel 64 bits) / st l fdivrp : remplace st, st(1) par st(1)/st(0) l fidivrs v 2, st(3) : st(3) v 2(entier 16 b) / st(3) l Département Informatique 29

FPU : Arithmétique (5) l fabs : valeur absolue l l fchs : opposé l l fsqrt : st √(st) fprem 1 : modulo l l fchs : st -st fsqrt : racine carrée l l fabs : st abs(st) fprem 1 : st % st 1 (reste de la division) frndint : partie entière l frndint : st [st] Département Informatique 30

Contenu du cours l l Unité Arithmétique et Logique (UAL/ALU) l Opérations arithmétiques l Opérations binaires Unité Flottante (FPU) l Opérations de transfert l Opérations arithmétiques l Opérations de comparaison l Note sur la précision des calculs Département Informatique 31

FPU : Comparaisons l fcom : compare et modifie les flags FPU l l fcomp : fcom + dépile l l fcom : compare st et st(1) fcoml v 1 : compare st et v 1 (double) fcom st(3) : compare st et st(3) fcomp : compare st et st(1) + dépile st fcomlp v 1 : compare st et v 1 (double) + dépile st fcomp st(3) : compare st et st(3) + dépile st fcompp : fcom + dépile 2 fois l fcompp : compare st et st(1) + dépile st et st(1) Département Informatique 32

FPU : Comparaisons (2) l fcomi : compare et modifie les flags CPU fcomi : compare st et st(1) l fcomi st(3) : compare st et st(3) l l fcomip : fcomi + dépile fcomip : compare st et st(1) + dépile st l fcomip st(3) : compare st et st(3) + dépile st l Département Informatique 33

FPU : Comparaisons (3) l ficom : compare avec un entier et modifie les flags FPU ficoml v 1 : compare st et v 1 (double) l ficoms v 2 : compare st et v 2 (float) l l ficomp : ficom + dépile ficompl v 1 : compare st et v 1 (double) + dépile st l ficomps v 2 : compare st et v 2 (float) + dépile st l Département Informatique 34

FPU : Comparaisons (4) l ftst : compare à 0 l l D’autres instructions existent… l l l ftst : compare st(0) à 0 Principalement sur la gestion des Na. Ns / ∞ Ce n’est pas le but de ce cours… Note finale : l l l Les flags FPU sont compatibles avec les flags CPU fstsw %ax : range l’état du FPU dans AX sahf : copie AH (flags FPU) dans EFLAGS Département Informatique 35

Contenu du cours l l Unité Arithmétique et Logique (UAL/ALU) l Opérations arithmétiques l Opérations binaires Unité Flottante (FPU) l Opérations de transfert l Opérations arithmétiques l Opérations de comparaison l Opérations de trigonométrie Département Informatique 36

FPU : Trigonométrie l fsin : remplace st par sin(st) l fcos : remplace st par cos(st) l fsincos : remplace st par sin(st) et empile cos(st) fldl alpha l fsincos l st(0)=cos(alpha) l st(1)=sin(alpha) l Département Informatique 37

FPU : Trigonométrie (2) l fptan : remplace st par tan(st) et empile 1 fldl alpha l fptan l st=1. 0 et st(1)=tan(alpha) l l fpatan : calcule atan(st(1)/st) fldl y l fldl x l fpatan l st=angle (x, y) l Département Informatique 38

FPU : calculs avancés l fyl 2 x : remplace st, st(1) par st(1)*log 2(st) fldl abc l fldl xyz l fyl 2 x l st(0) = abc * log 2(xyz) l l fyl 2 x 1 : idem avec st(1)*log 2(1+st) l f 2 xm 1 : remplace st avec (2 st - 1) Département Informatique 39

FPU : calculs avancés (2) l fscale : multiplie par une puissance de 2 fldl abc l fldl xyz l fscale l st(0) = xyz * 2[abc] l st(1) = abc l Département Informatique 40

Conclusion l Un processeur CISC sait faire beaucoup trop de choses… inutiles ou presque. l Rappel : 20% des opérations l Utilisées dans 80% des cas l l Il ne faut pas savoir toutes les instructions par cœur… l … mais savoir les retrouver quand on en a besoin ! Département Informatique 41
Allez vous en sur les places
Les composantes de la gar
Tu nous a donné
Par ton corps tu nous donnes la vie
Jai une question
Volcan de boue de sidoarjo
Chanson vetement anglais
Exemple de problématique oral brevet
Texte sur les nuages
Cours sur les lysosomes
Cours sur les antennes
Exposé sur les dauphins cm1
Les femmes sont sur la terre
Cours sur les trames
Exposé sur les kangourous
Exercices sur les constituants alimentaires
Equation bilan equilibree
Introduction sur les capteurs
Texte argumentatif sur les accidents de la route
Annotations sur les copies
Capitaliser sur les acquis
Maxime de relation exemple
Les femmes sont sur la terre... victor hugo (1802-1885) ...
Introduction sur les tice
Production écrite sur les nouvelles technologies
Microbes
Tigran becker
Exposé sur les harpies
Introduction sur les matériaux de construction
Exposé sur les lions
Ouvre mes yeux seigneur aux merveilles de ton amour paroles
Exposé panda géant
Biocapteur optique
Introduction les contemplations de victor hugo
Informations sur les chats
Mes vacances texte
Exposé sur les logiciels
Exposé pompier
Introduction sur les fruits et légumes
Quel beau nom que celui d'emmanuel
Diode germanium vs silicon
Laurent lefebvre umons