Op - PowerPoint PPT Presentation

About This Presentation
Title:

Op

Description:

Op rations sur les donn es Laurent JEANPIERRE D apr s le cours de Pascal FOUGERAY IUT de CAEN Campus 3 Contenu du cours Unit ... – PowerPoint PPT presentation

Number of Views:44
Avg rating:3.0/5.0
Slides: 42
Provided by: JEANPIERR114
Category:
Tags:

less

Transcript and Presenter's Notes

Title: Op


1
Opérations sur les données
  • Laurent JEANPIERRE ltjeanpl_at_iutc3.unicaen.frgt
  • Daprès le cours de Pascal FOUGERAY
  • IUT de CAEN Campus 3

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

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

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

5
UAL Arithmétique
  • Additions
  • add s,d d ? d s
  • adc s,d d ? d s C (bit de retenue)
  • inc d d ? d 1
  • Soustractions
  • sub s,d d ? d s
  • sbb s,d d ? d s C (bit de retenue)
  • dec d d ? d 1
  • Negation
  • neg d d ? -d

6
UAL Arithmétique (2)
  • Multiplications non signées
  • mulb v AX ? AL v
  • mulw v EAX ? AX v
  • mull v EDXEAX ? EAX v
  • Multiplications signées
  • imulb v AX ? AL v
  • imulw v EAX ? AX v
  • imull v EDXEAX ? EAX v

7
UAL Arithmétique (3)
  • Divisions non signées
  • divb v AL ? AX / v, AH Reste
  • divw v AX ? EAX / v, DX Reste
  • divl v EAX ? EDXEAX / v, EDX Reste
  • Divisions signées
  • idivb v AL ? AX / v, AH Reste
  • idivw v AX ? EAX / v, DX Reste
  • idivl v EAX ? EDXEAX / v, EDX Reste
  • Attention Diviser par 0 déclenche
    linterruption logicielle n 0 (division /0)

8
UAL Arithmétique (4)
  • Décalages non signés
  • shl v,1 v ? v 2
  • shl v,n v ? v 2n, n sur 8 bits
  • shl v, CL v ? v 2CL
  • shr v,1 v ? v / 2
  • shr v,n v ? v / 2n, n sur 8 bits
  • shr v, CL v ? v / 2CL

9
UAL Arithmétique (5)
  • Décalages signés
  • sal v,1 v ? v 2
  • sal v,n v ? v 2n, n sur 8 bits
  • sal v, CL v ? v 2CL
  • sar v,1 v ? v / 2
  • sar v,n v ? v / 2n, n sur 8 bits
  • sar v, CL v ? v / 2CL

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

11
UAL Opérations binaires
  • Rotations
  • rol
  • ror

12
UAL Opérations binaires (2)
  • Rotations à travers la retenue
  • rcl
  • rcr

13
UAL Opérations binaires (3)
  • Opérations bit à bit
  • and s,d d ? d ET s
  • andb 0b00001000,al isole le bit 3 de AL
  • or s,d d ? d OU s
  • orw 0x0F00,bx positionne les bits 8-11
  • xor s,d d ? d OU_EXCLUSIF s
  • xorb 0b1111, al inverse les bits 0-3
  • not d d ? NON d
  • notl ecx inverse chaque bit de ECX

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

15
Lunité flottante introduction
  • Unité de calcul flottant (FPU)
  • Accélère les calculs en virgule flottante
  • Dispose de
  • Ses propres instructions
  • Ses propres registres
  • Sa propre ligne dinterruption (matérielle)
  • Son propre séquenceur (exécution // processeur)
  • Existe en deux exemplaires
  • Depuis le Pentium Pro
  • ? Calculs parallèles

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

17
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 999 999 999
18
FPU Réels spéciaux
  • Normalement 1 réel
  • Signe 1 bit
  • Exposant 15 bits, biaisé (32767)
  • Mantisse normalisée 64 bits (1,xxxxxxxx)
  • Zero 0/1 00 00 0 ou -0
  • Infini 0/1 11 100 8 ou -8
  • NaN 0/1 11
  • Mantisse ? 100
  • Not a Number une erreur sest produiteexemple
    division par 0

19
FPU Instructions
  • Environ 90 instructions ?
  • Transfert de données
  • Lecture/écriture/échange
  • Opérations arithmétiques
  • ,-,,/,exp,log,v, mod, abs
  • Opérations trigonométriques
  • sin,cos,tan,atan
  • Opérations de contrôle
  • init, nop, save/restore registres spéciaux

20
FPU instructions (2)
  • Format des instructions
  • Lettre  f 
  • Mnémonique FPU
  • Taille dopération (sauf entre registres)
  • Tailles dopérations
  • S flottant 32 bits / entier 16 bits
  • L flottant 64 bits / entier 32 bits
  • T flottant 80 bits
  • Q entier 64 bits

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

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

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

24
FPU Opérations de transfert (3)
  • Empiler une constante
  • fldz 0
  • fld1 1
  • fldpi p
  • fldl2t log2 10
  • fldl2e log2 e
  • fldlg2 log10 2
  • fldle2 ln 2

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

26
FPU Arithmétique
  • fadd addition
  • faddl v1 st ? st v1 (double, 64 bits)
  • fadds v1,st(1) st(1) ? st(1) v1 (float, 32b)
  • fadd st,st(2) st ? st st(2)
  • faddp addition dépile

ST(0) 3.14159
ST(0) 4.14159
faddp
ST(1) 1.0
ST(1) 18.0
ST(2) 18.0
ST(2) ?????
27
FPU Arithmétique (2)
  • fiadd addition avec un entier
  • faddl v1 st ? st v1 (32 bits)
  • faddq v1,st(1) st(1) ? st(1) v1 (64 bits)
  • fsub(p), fsubr(p) soustraction
  • fsub v1 st ? st v1
  • fsub st,st(1) st(1) ? st(1) st
  • fsubr st,st(1) st(1) ? st st(1)
  • fsubp remplace st,st(1) par st-st(1)
  • fsubrp remplace st,st(1) par st(1)-st

28
FPU Arithmétique (3)
  • fisub, fisubr soustraction avec un entier
  • fisubs v1 st ? st v1 (16 bits)
  • fisubrl v1 st(1) ? v1 (32 bits) st(1)
  • fmul, fmulp, fimul multiplication
  • fmul st(1),st(2) st(2) ? st(2) st(1)
  • fmult v1 st ? st v1 (réel 80 bits)
  • fmulp remplace st,st(1) par stst(1)
  • fimulq v2,st(3) st(3) ? st(3) v2 (entier 64b)

29
FPU Arithmétique (4)
  • fdiv, fdivp, fidiv division
  • fdiv st(1),st(2) st(2) ? st(2) / st(1)
  • fdivl v1 st ? st / v1 (réel 64 bits)
  • fdivp remplace st,st(1) par st/st(1)
  • fidivl v2,st(3) st(3) ? st(3) / v2 (entier 32b)
  • fdivr, fdivrp, fidivr division inversée
  • fdivr st(1),st(2) st(2) ? st(1) / st(2)
  • fdivrl v1 st ? v1 (réel 64 bits) / st
  • fdivrp remplace st,st(1) par st(1)/st(0)
  • fidivrs v2,st(3) st(3) ? v2(entier 16b) / st(3)

30
FPU Arithmétique (5)
  • fabs valeur absolue
  • fabs st ? abs(st)
  • fchs opposé
  • fchs st ? -st
  • fsqrt racine carrée
  • fsqrt st ? v(st)
  • fprem1 modulo
  • fprem1 st ? st st1 (reste de la division)
  • frndint partie entière
  • frndint st ? st

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

32
FPU Comparaisons
  • fcom compare et modifie les flags FPU
  • fcom compare st et st(1)
  • fcoml v1 compare st et v1 (double)
  • fcom st(3) compare st et st(3)
  • fcomp fcom dépile
  • fcomp compare st et st(1) dépile st
  • fcomlp v1 compare st et v1 (double) dépile st
  • fcomp st(3) compare st et st(3) dépile st
  • fcompp fcom dépile 2 fois
  • fcompp compare st et st(1) dépile st et st(1)

33
FPU Comparaisons (2)
  • fcomi compare et modifie les flags CPU
  • fcomi compare st et st(1)
  • fcomi st(3) compare st et st(3)
  • fcomip fcomi dépile
  • fcomip compare st et st(1) dépile st
  • fcomip st(3) compare st et st(3) dépile st

34
FPU Comparaisons (3)
  • ficom compare avec un entier et modifie les
    flags FPU
  • ficoml v1 compare st et v1 (double)
  • ficoms v2 compare st et v2 (float)
  • ficomp ficom dépile
  • ficompl v1 compare st et v1 (double)
    dépile st
  • ficomps v2 compare st et v2 (float) dépile
    st

35
FPU Comparaisons (4)
  • ftst compare à 0
  • ftst compare st(0) à 0
  • Dautres instructions existent
  • Principalement sur la gestion des NaNs / 8
  • Ce nest pas le but de ce cours
  • Note finale
  • 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

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

37
FPU Trigonométrie
  • fsin remplace st par sin(st)
  • fcos remplace st par cos(st)
  • fsincos remplace st par sin(st) et empile
    cos(st)
  • fldl alpha
  • fsincos
  • ? st(0)cos(alpha)
  • ? st(1)sin(alpha)

38
FPU Trigonométrie (2)
  • fptan remplace st par tan(st) et empile 1
  • fldl alpha
  • fptan
  • ? st1.0 et st(1)tan(alpha)
  • fpatan calcule atan(st(1)/st)
  • fldl y
  • fldl x
  • fpatan
  • ? stangle (x,y)

39
FPU calculs avancés
  • fyl2x remplace st,st(1) par st(1)log2(st)
  • fldl abc
  • fldl xyz
  • fyl2x
  • ? st(0) abc log2(xyz)
  • fyl2x1 idem avec st(1)log2(1st)
  • f2xm1 remplace st avec (2st - 1)

40
FPU calculs avancés (2)
  • fscale multiplie par une puissance de 2
  • fldl abc
  • fldl xyz
  • fscale
  • ? st(0) xyz 2abc
  • ? st(1) abc

41
Conclusion
  • Un processeur CISC sait faire beaucoup trop de
    choses inutiles ou presque.
  • Rappel
  • 20 des opérations
  • Utilisées dans 80 des cas
  • Il ne faut pas savoir toutes les instructions par
    cœur
  • mais savoir les retrouver quand on en a besoin !
Write a Comment
User Comments (0)
About PowerShow.com