Les assembleurs

publicité
Les assembleurs
• Instruction machine : code binaire difficile à lire
• Equivalence entre code binaire de l'instruction et mnémonique
• Définition symbolique des adresses
• Règles de syntaxe
Langage d'assemblage
• Traduction du langage d'assemblage en instructions binaires
• Correspondance univoque entre
instruction symbolique et instruction machine
• Ensemble des instructions symboliques : programme source
• Ensemble des instructions binaires : programme objet
• Programme de traduction
Assembleur
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 1
Syntaxe
4 champs :
Label
symbole
délimiteurs (blancs)
Opération
code fonctionnel
Operands
adresses
Commentaire
non traduit
NB. le label est un symbole qui représente l'adresse de l'instruction
Représentation des nombres :
La base utilisée est représentée par un caractère spécial
Exemple : Hexadécimal
$ ($45)
Décimal
& (&69)
Défaut : Hexadécimal
Octal
@ (@105)
Binaire
% (%1000101)
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 2
L'assembleur du PowerPC
Unité de
contrôle
Unité
arithm. réelle
Unité
arithm. entière
mémoire
cache
Mémoire principale
0
R0
R1
0



R31
Registres
31
0
31
CR
0
XER
FR0
FR 1
31
63



FR31
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 3
Organisation mémoire
• Mots de 32 bits
• Convention ”Big-endian”
0
8
16
octet 0 octet 1
demi mot 0
24
32
40
48
mot 0
63
octet 7

demi mot 2
56
demi mot 6

mot 4
double mot 0
• Processeur RISC
• Instructions de longueur constante
• Architecture ”Load and Store” (Charger/Déposer)
• Opérations logiques et arithmétiques au départ des registres de
travail
• Adressage du type indexé (implicite indirect)
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 4
Catégories d'instruction
• Instructions Charger/déposer (Load and Store)
• Instructions d'arithmétique entière (registres R0-R31; pas d'accès
direct à la mémoire)
• Instructions de logique
• Contrôle de séquence (branchement et branchement conditionnel)
• Instructions d'arithmétique réelle (registres FR0-FR31)
• Contrôle du processeur et des entrées/sorties
Adressage
• Mode indexé immédiat :
Décalage ”n” (16 bits) par rapport à l'adresse contenue dans
le registre Ri
n(Ri) Aeff= n + [Ri]
• Mode indexé registre :
Somme du contenu de deux registres
Ri, Rj Aeff = [Ri] + [Rj]
Si le symbole ”Rj” est remplacé par ”0”
Aeff = [Ri]
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 5
Charger & Déposer (Load & Store)
Charger (L) : mémoire registre
y: B octet; y: H
• Charger :
Déposer (ST) : registre
demi mot; y: W mot
mémoire
16 bits avec extension signe
LyZ
Rd,n(Ri)
Aeff=n+[Ri]; Rd  [Aeff]
LyZX Rd,Ri,Rj
Aeff=[Ri]+[Rj]; Rd [Aeff]
LyZU Rd,n(Ri)
Aeff=n+[Ri]; Rd  [Aeff]; Ri  Aeff
LyZUX Rd,Ri,Rj
Aeff=[Ri]+[Rj]; Rd  [Aeff]; Rj  Aeff
LHA, LHAX, LHAU, LHAUX : Load Half-word Algebraic
Argument chargé avec extension de signe
LFS, LFSX, LFSU, LFSUX : Load Floating-point registers (FRi)
• Déposer :
STy
STyX
STyU
STyUX
Rs,n(Ri)
Rs,Ri,Rj
Rs,n(Ri)
Rs,Ri,Rj
Aeff=n+[Ri]; [Rs] Aeff
Aeff=[Ri]+[Rj]; [Rs] Aeff
Aeff=n+[Ri]; [Rs] Aeff; Ri  Aeff
Aeff=[Ri]+[Rj]; [Rs] Aeff; Rj  Aeff
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 6
Transfert multiple
LMW Rd,n(Ri) Aeff=n+[Ri]; Rd…R31  [Aeff] …[Aeff+(31-d)x4]
STMW Rs,n(Ri) Aeff=n+[Ri]; Rs…R31 [Aeff] …[Aeff+(31-d)x4]
Exemples
R11
00 00 4A A4
20
Mémoire
adresse
00004AA4 5C BA 22 01
00004AA8 12 8E 43 60
R12 00 00 00 84
R13 00 00 00 89
R14 00 00 43 60
LHZ
R14, 8A(R11)
R15
5C BA 22 01
LWZX R15, R12, R11
R16 00 00 00 8E
LBZX R16, R13, R11
R17 00 00 5C BA
LHZUX R17, R12, R11
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 7
Instructions arithmétiques entières
• Addition :
ADD
ADDC
ADDE
ADDI
ADDIS
ADDIC
ADDME
ADDZE
Rd,Ri,Rj
Rd,Ri,Rj
Rd,Ri,Rj
Rd,Ri,n
Rd,Ri,n
Rd,Ri,n
Rd,Ri
Rd,Ri
Rd  [Rj]+[Ri]
Rd  [Rj]+[Ri]; CA  report
Rd  [Rj]+[Ri]+[CA]
Rd  [Ri]+n (16 bits; ext. signe)
Rd  [Ri]+n (16 bits; 2 octets sup.)
Rd  [Ri]+n (16 bits; ext. signe); CA  report
Rd  [Ri]-1+[CA]
Rd  [Ri]+[CA]
• Soustraction : SUBF ⇔ ADD (SUBtract From)
SUBF
Rd,Ri,Rj
Rd  [Rj]-[Ri]
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 8
Remarques
• Les instructions comportant un operand immédiat permettent
de stocker des valeurs d'adresse dans les registres
• Exemple :
R21
FF FF A8 F4
ADDI R21, 0, $A8F4
R21
00 48 A8 F4
ADDIS R21, 0, $48
• Registre de condition (CR : Condition Register)
GT
EQ
SO
LT
0 1 2 3
LT : bit = 1 si plus petit que zéro
GT : bit = 1 si plus grand que zéro
EQ : bit = 1 si égal à zéro
SO : bit = 1 si dépassement de précision (remis à zéro par inst. spécifique)
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 9
• Registre d'exception (XER : eXcEption Register )
SO
OV
CA
0 1 2
SO : bit = 1 si dépassement de précision (remis à zéro par inst. spécifique)
OV : bit = 1 si dépassement de précision (bit = 0 dans autre cas)
CA : bit = 1 report instruction arithmétique
Les instructions arithmétiques peuvent modifier le contenu de CR et XER
• Suffixe au code opératoire : "." pour CR
"o" pour XER
"o." pour CR et XER simultanément
• Exemple
CR0-3
ADD. R1, R2, R3
R1 00 00 00 D8 0100
R2 00 00 00 65
R3
00 00 00 73
SUBF. R5, R3, R2
R5
FF FF FF 02 1000
R4
00 00 00 73
SUBF. R6, R4, R3
R6
00 00 00 00 0010
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 10
Arithmétique entière (suite)
• Multiplication
MULLW
MULHW
MULHWU
MULLI
Rd,Ri,Rj
Rd,Ri,Rj
Rd,Ri,Rj
Rd,Ri,n
Rd [Ri] x [Rj] (16 bits du bas [Low]; avec signe)
Rd [Ri] x [Rj] (16 bits du haut [High]; avec signe)
Rd [Ri] x [Rj] (16 bits du haut; sans signe)
Rd [Ri] x n (16 bits du bas; avec signe)
Rd,Ri,Rj
Rd,Ri,Rj
Rd [Ri] / [Rj] (avec signe; reste non calculé)
Rd [Ri] / [Rj] (sans signe ; reste non calculé)
• Division
DIVW
DIVWU
Calcul du reste : DIVW
MULLW
SUBF
• Négation
NEG
Rd,Ri
Rd,Ri,Rj
Rr,Rd,Rj
Rr,Rr,Ri
Rd=quotient
Rr=quotient x diviseur
Rr=reste
Rd  -[Ri]
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 11
Les instructions de branchement
Adressage
• Branchement inconditionnel : 23 bits
— Mode relatif : -224 ≤ adresse ≤ 224-1
s
Déplacement
0
30 31
78
Ext. signe
00
+
PC
— Mode absolu : adresse ≤ 225-1
0
30 31
67
000000
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
00
D. Bertrand 12
• Branchement conditionnel : 13 bits
— Mode relatif : -214 ≤ adresse ≤ 214-1
s
Déplacement
0
30 31
17 18
Extension signe
00
+
PC
— Mode absolu : adresse ≤ 215-1
0
30 31
16 17
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
00
D. Bertrand 13
Les registres de lien et de
comptage
LR : Link Register
CTR : CounT Register
Registres de 32 bits
pas de restriction d'adressage
• Chargement et référence :
MTLR
Rs
LR  [Rs]
MTCTR
Rs
CTR  [Rs]
MFLR
Rd
Rd  [LR]
MFCTR
Rd
Rd  [CTR]
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 14
Branchements
Adresse cible définie dans l ’instruction : Bxxx Adr
Condition bit CR
Registre LR non modifié
Registre LR mis à jour
Relatif
Absolu
Relatif
Absolu
Néant
-
B
BA
BL
BLA
plus petit
LT=1
BLT
BLTA
BLTL
BLTLA
plus petit ou
égal
GT=0
BLE
BLEA
BLEL
BLELA
égal à zéro
EQ=1
BEQ
BEQA
BEQL
BEQLA
plus grand
ou égal
LT=0
BGE
BGEA
BGEL
BGELA
plus grand
GT=1
BGT
BGTA
BGTL
BGTLA
différent de
zéro
EQ=0
BNE
BNEA
BNEL
BNELA
CTR=CTR-1;
CTR=0
-
BDZ
BDZA
BDZL
BDZLA
CTR=CTR-1;
CTR<>0
-
BDNZ
BDNZA
BDNZL
BDNZLA
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 15
Branchements (suite)
Adresse cible définie dans registre LR ou CTR : Bxxx
Condition bit CR
Registre LR non modifié
Registre LR mis à jour
Vers LR
Vers CTR
Vers LR
Vers CTR
Néant
-
BLR
BCTR
BLRL
BCTRL
p lu s p etit
LT=1
BLTLR
BLTCTR
BLTLRL
BLTCTRL
p lu s p etit o u
ég al
GT=0
BLELR
BLECTR
BLELRL
BLECTRL
ég al à zéro
EQ=1
BEQLR
BEQCTR
BEQLRL
BEQCTRL
p lu s g r an d
o u ég al
LT=0
BGELR
BGECTR
BGELRL
BGECTRL
p lu s g r an d
GT=1
BGTLR
BGTCTR
BGTLRL
BGTCTRL
différen t de
zéro
EQ=0
BNELR
BNECTR
BNELRL
BNECTRL
C TR= C TR- 1;
C TR= 0
-
BDZLR
-
BDZLRL
-
C TR= C TR- 1;
C TR< > 0
-
BDNZLR
-
BDNZLRL
-
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 16
Exemple
• Nombre "n" en mémoire à l'adresse 45600016;
• Exposant "e" (>0) à l'adresse 45600416;
• Calculer ne et déposer le résultat à l'adresse 45600816
Utilisation d'un indice de boucle (R3)
ADDI R1,0,6000
ADDIS R1,0,45
LWZX R2,0,R1
LWZU R3,4(R1)
ADDI R4,0,1
ITER MULLW R4,R4,R2
ADDI. R3,R3,-1
BGT ITER
STW R4,4(R1)
adresse
du nombre
nombre
exposant
init. res.
multiplic.
decr. exp.
boucle
stock. res.
Utilisation du registre CTR
ADDI R1,0,6000
ADDIS R1,0,45
LWZX R2,0,R1
LWZU R3,4(R1)
ADDI R4,0,1
MTCTR R3
ITER MULLW R4,R4,R2
BDNZ ITER
STW R4,4(R1)
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
adresse
du nombre
nombre
exposant
init. res.
init. CTR
multiplic.
boucle
stock. res.
D. Bertrand 17
Instructions de comparaison
• Le registre de condition revisité :
0
4
CR0
8
CR1
12
16
CR3
CR2
LT
GT
20
CR4
EQ
24
CR5
28
CR6
CR7
SO
• Définition des bits LT, GT ou EQ dans le champ CRk du registre CR
suivant le résultat de la comparaison (cmp : <,>,=)
CMPW
CMPWI
CMPL
CMPLI
CRk,Ri,Rj
CRk,Ri,n
CRk,Ri,Rj
CRk,Ri,n
[Ri] cmp [Rj]
[Ri] cmp n (16 bits; extension signe)
|[Ri]| cmp |[Rj]|
|[Ri]| cmp n (16 bits; extension zéros)
• Redéfinition des instructions de branchement
Bxxxx
CRk,Adr
branchement conditionnel vers Adresse selon état CRk
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 18
R9
Exemple
00 00 00 FF
R10 00 00 00 10
R11
00 00 00 00
R12
00 00 00 10
CMPW CR1,R9,R10
CMPW CR2,R11,R10 CR
CMPW CR6,R12,R10
BGT CR2,CIBLE
00
04 00
80 00 00
20
• Combinaison des champs du registre CR
bit j de CR
CRAND CRBd,CRBi,CRBj
CRBd  CRBi ∧ CRBj
CRANDC CRBd,CRBi,CRBj
CRBd  CRBi ∧ ¬CRBj
idem CRNANDy, CRNORy, CRORy, CRXORy
Exemple : if ([R1]>[R2]) ∧ ([R3]<[R4]) executer …
0
4
CR0
8
CR1
CMPW
CR1,R1,R2
BLE
CR1,SUITE
CMPW
CR2,R3,R4
BGE
CR2,SUITE
executer …
12
CR2
16
CR3
1er test
2ème test
20
CR4
24
CR5
28
CR6
CR7
+0 +1 +2
LT GT EQ
CMPW CR1,R1,R2
1er test (GT : bit 5)
CMPW CR2,R3,R4
2ème test (LT : bit8)
CRAND CRB14,CRB5,CRB8 comb (EQ : bit 14)
BNE
CR3,SUITE
executer …
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 19
Les instructions logiques
• Les ”portes”
AND
ANDC
ANDI
ANDIS
Rd,Ri,Rj
Rd  [Ri] ∧ [Rj]
Rd,Ri,Rj
Rd  [Ri] ∧ ¬[Rj]
Rd,Ri,n
Rd  [Ri] ∧ n (16 bits; extension zéros)
Rd,Ri,n
Rd  [Ri] ∧ n (16 bits; glissés à gauche)
idem NANDy, NORy, ORy, XORy
• Rotations (RL : Rotate Left)
Masque M: mot de 32 bits où les bits Md à Mf sont mis à 1.
RLWNM Rd,Ri,Rj,Md,Mf Rd  M ∧ ([Ri] rotation gauche de [Rj] bits)
RLWINM Rd,Ri,n,Md,Mf Rd  M ∧ ([Ri] rotation gauche de n bits)
• Glissements (SL : Shift Left; SR : Shift Right)
SLW
SRAW
SRAWI
SRW
Rd,Ri,Rj
Rd,Ri,Rj
Rd,Ri,n
Rd,Ri,Rj
Rd  [Ri] glissé à gauche de [Rj] bits (bits libérés mis à zéro)
Rd  [Ri] glissé à droite de [Rj] bits (extension signe)
Rd  [Ri] glissé à droite de n bits (extension signe)
Rd  [Ri] glissé à droite de [Rj] bits (extension zéros)
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 20
adresse



Sous-modules, pile
MOD1
appel 1er module
00
0000
00
0080
98
99
93
44
94
80
94 00
04
08
20
0C
24
18
14
10
1C
PC 00
8000 MOD1 ADDI
STMW
MFLR
STW
R0,R0,-10
R29,4(R0)
R29
R29,0(R0)
préparer pointeur pile
sauver R29-R31
sauver LR
dans la pile
LR 00 00 00
93
44 04
00
9300
BL
MOD2
appel 2ème module
9414
LWZ
R29,0(R0)
MTLR R29
LMW R29,4(R0)
ADDI R0,R0, 10
BLR 
4400
BL











préparer pointeur pile
sauver R30-R31
9904
restaurer R30-R31
mise à jour pointeur pile
retour
LMW
ADDI
BLR
R30,0(R0)
R0,R0, 8
A48
[R30]
[R31]
restaurer LR
de la pile
A50 00 00 44 04
restaurer R29-R31
mise à jour pointeur pile
[R29]
retour
[R30]
9800 MOD2 ADDI R0,R0,-8
STMW R30,0(R0)



R0 00 00 0A 60
50
48
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
[R31]
A60
…
D. Bertrand 21
Pseudo-opérations
Non exécutables : actions statiques mémoire, commandes à l'assembleur
• Réservation d'espace mémoire
o .long
.long n1,[n2] stockage de nombres entiers (64 bits)
o .word
.word n1, [n2] stockage de nombres entiers (32 bits)
o .short .short n1,[n2] stockage de nombres entiers (16 bits)
o .byte
.byte n1,[n2] stockage d'octets (8 bits)
o .double .double f
stockage de réel (64 bits)
o .float
.float f
stockage de réel (32 bits)
o .space .space n
remplissage de n octets avec zéros
o .string .string s
stockage d'une chaîne de caractères
o .align
.align n
alignement sur le multiple suivant de n
o .alon, .aloff
alignement forcé (non-forcé) sur des mots
• Définition de symboles
o .set
.set nom,expression association d'une expression
au symbole
• Modularité
o .comm .comm nom,no,al bloc commun de no octets aligné
o .extern .extern nom spécification d'un symbole externe
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 22
• Contrôle du processus d'assemblage
o .if,.else,.elseif,.endif
assemblage conditionnel
o .include .include fichier
Inclusion d'instructions d'un
fichier extérieur
• Contrôle des informations imprimées
o .page, .pagelen
contrôle de pagination
o .title
définition d'un titre
• Utilisation de macros
o Bloc d'instructions et pseudo-instructions se répétant dans
code source
o Une macro peut faire appel à d'autres macros
o Une macro peut recevoir des paramètres
o Définition :
.macro nom [,param]
Code
.mend
o Chaque élément du code est reproduit dans la source
o Les labels (suivis de ”!”) sont incrémentés
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 23
Exemple
Définition d'une somme
.macro sum,start,n,result
ITER!
.mend
LWZ R1,start(R0)
ADDI R1,R1,-4
LWZ R2,n(R0)
MTCTR R2
ADDI R3,0,0
LWZU R4,4(R1)
ADD R3,R3,R4
BDNZ ITER!
STW R3,result(R0)
LWZ
ADDI
de n nombres :
LWZ
MTCTR
n
o
i
s
n
a
ADDI
p
4
ère ex
,
1
,-8
ITER_1 LWZU
0
m
su
ADD
BDNZ
STW
R1,0(R0)
R1,R1,-4
R2,-8(R0)
R2
R3,0,0
R4,4(R1)
R3,R3,R4
ITER_1
R3,-4(R0)
LWZ
ADDI
LWZ
MTCTR
ADDI
ITER_2 LWZU
ADD
BDNZ
STW
R1,20(R0)
R1,R1,-4
R2,18(R0)
R2
R3,0,0
R4,4(R1)
R3,R3,R4
ITER_2
R3,1C(R0)
2 ème
sum expansi
20,1 on
8, 1C
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 24
Le processus d'assemblage
• Correspondance univoque entre instruction source et code objet
Exemple : ADDI R1,R8,-1
3829FFFF16
• Assignation d'une adresse à chaque instruction
• Attribution de l'adresse instruction correspondante au label


Adresses

Adresses symboliques
50400
50404
50408
5040C ITER
50410
50414
50418 SUITE
ADDI
R3,0,0
CMPWI CR3,R2,0
BEQ
CR3,SUITE
LWZU R4,4(R1)
ADD
R3,R3,R4
BDNZ ITER
STW  R3,16(R0)


SUITE
ITER
50418
5040C
Constitution d'une
table des symboles
NB. SUITE :
référence vers l'avant !
• Vérification syntaxique (label, code opératoire, adresses, commentaire)
Codes connus repris dans une table
• Notification des erreurs et production d'une documentation
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 25
Deux étapes
Init. compteur
adresse
lecture
inst. suivante
2ème étape
decodage
code opératoire
long. programme
=compt. adresse
oui
pseudo
inst. ?
non
label ?
Init. compteur
adresse
oui
fin
lecture
inst. suivante
code objet +
table reloc.
fichier
decodage
code opératoire
oui
.end ?
non
.end ?
non
évaluation
opérands
évaluation
opérands
s:
r
u
e
rr
e
s
e
oui
pseudo
inst. ?
non
évaluation
code op +adres.
assemblage
code binaire
d
n
o
i
t
oui
non
c
e
t
é
is
D
e
n
x
i
f
a
label + adresse
é
t
d
mise à jour
n
table symb.
• Sy boles in
table relocation
Création
m
y
•S
Construction
code objet et
mise à jour
mise à jour
compt. adresse table symboles
table relocation compt. adresse
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 26
Création et consultation de tables
Usage fréquent par les logiciels système et de support
• Techniques séquentielles
o Information insérée en suivant le séquence temporelle
o Recherche réalisée depuis le début de la table
Recherche
Exemple:
Symbole Valeur Entrée
entrée  1
1
ITER_1
5040C
1
FIN
45700
2
2
oui
7689A
3
RET_2
3
clef entrée
succès
OK?
DEBUT
809D4
4
RET_2 ?
non
TEST
DE8F0
5
3 essais RAZ
entrée= oui
A678C
6
erreur
entrée  0
Insertion
entrée 
entrée + 1
info. insérée
à entrée
long.tab.
non
entrée
 entrée + 1
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 27
Techniques binaires ou dichotomiques
• Table triée selon l'ordre alphabétique des clefs
• Début comparaison au milieu de la table
• Symbole recherché = clef information retrouvée
• Symbole recherché > clef poursuite au départ de la moitié supérieure
• Symbole recherché < clef poursuite au départ de la moitié inférieure
Exemple:
1
RET_2 ?
2 essais
2
Symbole
DEBUT
FIN
ITER_1
RAZ
RET_2
TEST
Valeur
809D4
45700 Plus efficace :
5040C En moyenne : (log2n-1) essais
A678C Condition d'erreur : log2n essais
7689A
DE8F0
! Mais opération de tri !
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 28
Techniques de hashing
• Définition d'une fonction Φ prenant une valeur µ pour chaque clef :
µ = Φ(clef)
• Intervalle µ : [1, m] avec m ≥ n (longueur table)
• La même valeur peut être attribuée à des clefs différentes
•
Collisions
Exemple: Symbole Valeur Φ(clef)
Pos.
Symbol
Value
ITER_1 5040C
1
ITER_1
5040C
collision 1
FIN
45700
2 1
2
FIN
45700
3
RET_2
7689A
RET_2 7689A 2 2
4
TEST
DE8F0
DEBUT 809D4 8
5
TEST
DE8F0 4
RAZ
A678C
7 RET_2 ? 6
RAZ
A678C
2 essais 7
En général m >> n !
8
DEBUT
809D4
Année préparatoire Licence Informatique (ULB/UMH) Charleroi. Fonctionnement des ordinateurs. Chapitre 9
D. Bertrand 29
Téléchargement