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