Oprations sur les donnes Laurent JEANPIERRE jeanpliutc 3

  • Slides: 41
Download presentation
Opérations sur les données Laurent JEANPIERRE <jeanpl@iutc 3. unicaen. fr> D’après le cours de

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

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’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

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,

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

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

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,

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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 :

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

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

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

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

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

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) :

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é

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

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

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

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

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

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

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

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

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

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

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.

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