9999999999999999999999999999999999999Objectif du coursCours ArchitectureDe quoi est composé un ordinateur ? (ASR 2)Quels sont les modèles sous-jacents au Stéphane LavGaëtan Rey irottefonctionnement d’une machine ?JeanJean-YvYveess TiTigglliiComment s’exécutent les programmes ?IUT de Nice - Côte d’AzurDépartement InformatiqueQuel est le lien entre le logiciel et le matériel ?Gaetan.Rey@unice.frComment fonctionnent les divers périphériques ?Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 2Organisation du Cours Le Le Projet Projet (1) (1)Les séances Rédiger un article sur un sujet en rapport avec le cours– 7 x 1h30 de cours – Article technique– 10 x 1h30 de TP – Sujets complexes et non traités en coursLes intervenants Consignes– Marcela Rivera (4 groupes TP) – Respecter les consignes « Hermès »– Gaëtan Rey (1 groupe TP + cours) – Taille limitée de 8 à 12 pagesLes évaluationsAttention– un devoir surveillé– S’approprier le sujet sans faire du plagiat– un contrôle possible à chaque séance TP– Référencer et diversifier vos sources.– un projet bibliographiqueJanvier 2010 Gaëtan Rey - DUT Informatique de Nice 3 Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 4Le Le Projet Projet (2) (2) Les Les sujets possible pour le ProjetLes Ecrans plats (Plasma, La loi de Moore et la Loi de Publication en ligne des meilleurs articlesLCD, SED, OLED…) Rock– Objectif est de créer une mini revue technique Les Disques Durs ...
IUT de Nice - Côte dAzur Département Informatique Gaetan.Rey@unice.fr
Organisation du Cours
9 Les séances 7 x 1h30 de cours 10 x 1h30 de TP 9 Marcela Rivera (4 groupes TP) Gaëtan Rey (1 groupe TP + cours) 9 Les évaluations un devoir surveillé uncontrôle possible à chaque séance TP un projet bibliographique Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
3
L e P r o j e t ( 2 ) 9 Publication en ligne des meilleurs articles Objectif est de créer une mini revue technique Des questions à lexam sur les meilleurs articles 9 Pour la semaine rochaine Établir les groupes Choisir et faire valider un sujet par groupe 9 Le reste du projet À faire en dehors des cours A rendre avant le 19 avril à 12h00 Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
5
Objectif du cours 9 De quoi est composé un ordinateur ? 9 Quels sont les modèles sous-jacents au fonctionnement dune machine ? 9 Comment sexécutent les programmes ? 9 Quel est le lien entre le logiciel et le matériel ? 9 Comment fonctionnent les divers périphériques ? Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 2
L e P r o j e t ( 1 ) 9 Rédiger un article sur un sujet en rapport avec le cours Article technique Sujets complexes et non traités en cours
Respecter les consignes « Hermès » Taille limitée de 8 à 12 pages 9 Attention Sapproprier le sujet sans faire du plagiat Référencer et diversifier vos sources. Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
4
Les sujets possible pour le Projet 9 Les Ecrans plats (Plasma, 9 La loi de Moore et la Loi de LCD, SED, OLED) Rock 9 Les Disques Durs 9 Le standard SCSI 9 Les CD-ROM, DVD-ROM et 9 Le standard ATA (IDE et BD-ROM ATAPI) 9 Architecture 680x0 9 Le standard SATA 9 Architecture POWER (SRAM) 9 Architecture ARM 9 Les mémoires Dynamiques 9 Architecture Cell (DRAM) 9 Architecture IA-64 9 LeRsAmMémo)iresVidéos9 Architecture MIPS 9 (V 9 Le F t Site B ron us 9 Les bus PCI / PCI-X 9 Les bus ISA / EISA / VLB Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 6
1
Plan
9 Introduction9 Représentation de linformation 9 Arithmétique binaire 9 Algèbre de Boole 9 Architecture type Von Neumann 9 Couche dassemblage / Assembleur 8086 9 Mécanismes dinterruptions 9 Fonctions avancées de processeurs modernes 9 Gestion de la mémoire 9 Traduction de programmes, compilation édition de liens, chargement Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 215
Assembleur (1) 9 L'opération d'assemblage traduit chaque instruction du programme source en une instruction machine. 9 Le résultat de l'assemblage est enregistré dans un fichier ' 9 Le fichier .OBJ n'est pas directement exécutable. En effet, il arrive fréquemment que l'on construise un programme exécutable à partir de plusieurs fichiers sources. 9 Il faut « relier » les fichiers objets à l'aide d'un utilitaire nommé éditeur de lien (même si l'on en a qu'un seul). Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 217
Compilation, édition de liens Exemple dun programme constitué de 2 fichiers/modules M1 et M2 Source du Source du module M1 module M2 M1.asm M2.asm traducteur traducteur Résultat de la Résultat de la traduction de M1 traduction de M2 M1.obj M2.obj Editeur de lien Programme exécutable M1+M2 prog.exe Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 219
Chaîne dexécution 9 Assembleur/Traducteur (exemple : MASM, TASM) Lassembleur est chargé deffectuer la traduction dun module source (.asm) en module objet (.obj).
Léditeur de lien est chargé de regrouper plusieurs modules objets (.obj) afin de produire un programme « exécutable » (.exe) 9 Chargeur (exemple : MS-DOS) Lorsque on demande au système de lancer un exécutable, celui-ci fait appel au « chargeur ». Son rôle est de copier le programme en mémoire, et dinitialiser certains registres (compteur ordinal entres autres) Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 216
Assembleur (2) 9 L'éditeur de liens fabrique un fichier exécutable , avec l'extension .EXE. 9 Le fichier .EXE est directement exécutable. 9 Un utilitaire spécial du système d'exploitation (MSDOS ici), le chargeur est responsable de la lecture du fichier exécutable, de son implantation en mémoire principale, puis du lancement du programme.
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 218
Définitions 9 Objet physique : objet directement manipulable par la machine. valeurs, emplacements mémoire, instructions, etc. 9 Objet logique : objet manipulé par le programme 9 La liaison consiste à associer à chaque objet logique du programme un objet physique de la machine. 9 Le problème de la liaison se ramène à associer une adresse à chaque identificateur du programme Certaines adresses ne sont calculées quà lexécution, on va sintéresser à la partie du travail effectuée avant lexécution Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 220
2
Liaison : exemple (1) 9 Accéder à une variable globale/statique ? On utilise une instruction machine qui contient une adresse Adressage direct (variable simple) ou indexé (tableau statique) Liaison= associer une adresse à lidentificateur de la variable cc er une var a e oca e param re un ous Programme ? Ces variables sont stockées dans la zone de pile, Instructionmachine qui contient un déplacement (basé) Liaison= associer un déplacement à lidentificateur
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 221
Janvier 2010
Machine à un niveau dadressage
Gaëtan Rey - DUT Informatique de Nice
223
Machine à 1 et 2 niveaux dadressages
Le code nest pas lié à ladresse Le code est lié à ladresse dimplantation des données dans la dimplantation des données dans la mémoire physique mémoire physique Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 225
Liaison : exemple (2) 9 Accéder à une variable dans le tas ? Les objets du tas sont crées/détruits pendant lexécution Pas didentificateur désignant directement un élément du tas Liaison= adresse de linstruction dans le programme
Janvier 2010
Janvier 2010
Gaëtan Rey - DUT Informatique de Nice 222
Machine à deux niveaux dadressage
Gaëtan Rey - DUT Informatique de Nice
224
Exemple (1)
MOV [1000], 5 adressage direct MOV [1004], 8 adressage direct PUSH 10 adressage immédiat PUSH 1000 adressage immédiat CALL SP , a ressage as MOV [1002], AX adressage direct MOV AX, 0 adressage par valeur MOV [BP-2], AX adressage basé/BP MOV AX, 0 MOV BX, [BP+4] adressage basé/BP MOV [BX],AX adressage indirect (1) (2) Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 226
3
9 On en déduit les informations de liaisons X1 → 1000 (adresse) direct X3 → 1004 (adresse) direct Y → -2 (déplacement) basé/BP V → +6 (déplacement) basé/BP R → +4 (déplacement) basé/BP Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
Exemple (2)
227
Mécanisme de liaison (3) 9 Le compilateur ne connaît quun module à la fois : Les adresses produites sont des adresses à lintérieur de chaque module formant le programme. Ilne peut pas traduire laccès aux objets externes (ex : SP2) Regrouper le code de M1 et M2 pour former le code final Regrouper les données statiques de M1 et M2 pour obtenir la zone de données statiques finale Résoudre les références externes 9 Léditeur de liens a donc transformé les adresses dans le module en adresses dans le programme Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 229
Janvier 2010
Exemple liaison (1 seul niveau dadressage)
Gaëtan Rey - DUT Informatique de Nice
231
extern procédure SP2(ent a);
Mécanisme de liaison
référence externe : Lobjet est utilisé dans le module, mais défini à lextérieur Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
228
Mécanisme de liaison (4) 9 Pour les données, le regroupement de modules implique des translations dadresses qui sont fonction de la taille des modules formant le programme Ladresse de u dans le module M2 est 0 Ladresse de u dans le ro ramme com let est 6 9 Il reste encore à translater les adresses dans le programme avec ladresse dimplantation du programme en mémoire. Ceci peut être réalisée soit par léditeur de liens (qui effectue les deux translations en même temps) le chargeur (qui implante le programme en mémoire) Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 230
Janvier 2
Exemple liaison 2 niveaux dadr ge)
Gaëtan Rey - DUT Informatique de Nice
232
4
Exercice 9 Donner le résultat de la traduction complète de lexemple vu précédemment, en indiquant pour chaque instruction si elle nécessite une translation. On suppose quil y a séparation du code et des données Les instructions occu ent toutes 4 octets 9 Indiquer le travail de translation effectué et le résultat de lédition de lien dans le cas où la taille du système est de adresse d'implantation du programme en mémoire = 1000 code M1 = 150, code M2 = 40 Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 233
Grammaire (1) 9 Formalisme permettant de décrire la structure des programmes Décrit la syntaxe Æ en décrit aussi indirectement la sémantique 9 Une rammaire est formée dun ensemble de rè les de pro uc on e un sym o e e par Chaque règle est formée de 2 parties La partie gauche : le nom de la construction syntaxique La partie droite : une forme possible de la construction syntaxique
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 235
Grammaire : Exercice 9 Exercice : écrire la grammaire dune version simplifié du langage assembleur x86 Le langage comportera obligatoirement 3 segments (PILE, DONNEE, CODE) dans cet ordre Le Segment de pile Le Segment de donnée Déclaration de variable 8 et 16 bits Déclaration de tableau avec ou sans DUP Le Segment de code Déclaration assume Prise en charge des instructions MOV, ADD, INC, DEC, POP, PUSH, INT, JMP, JE, JA, JB Etiquettes Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 237
Analyse lexicale 9 Principe On découpe le texte du programme source en unités lexicales Celles-ci correspondent aux non terminaux de la grammaire. 9 Exemple : OV A ,12 <ident> <ident> <constante> avec <ident> = lettre {lettre | chiffre}* <constante> = chiffre + 9 Les critères de découpages peuvent être +/- précis : Purement lexical : ce quon vient de voir Sémantique (on va différencier les identificateur des directives et des mnémoniques dinstructions en consultant des tables) Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 234
Grammaire : Correction _ _ _ _ PROGRAMME Æ SEG P SEG D SEG C FIN PROG _ _ _ _ SEG P Æ DEB SEG RES P ETIQU FIN SEG BED SEG Æ IND ment CR _ ENT seg RES_P Æ dw NOMBRE dup (?) CR ETIQU Æ INDENT : CR _ _ _ _ _ SEG D Æ DEB SEG RES D* FIN SEG _ UITE_VAL | _ RES D Æ INDENT dw S INDENT db SUITE VAL RES_D Æ INDENT dw NOMBRE dup ( VAL_SIMPLE ) _ NOMBRE dup (VAL_SIMPLE) RES D Æ INDENT db SUITE_VAL Æ VALEUR | VALEUR , SUITE_VAL _ PLE | _ VALEUR Æ VAL SIM CHAINE CAR VAL_SIMPLE Æ ? | NOMBRE | CARACTERE Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 238
5
Analyse syntaxique et production 9 Principe de lanalyse syntaxique : On vérifie que les unité lexicales se présentent dans un ordre conforme à la grammaire du langage Exemple : MOV AX,0 est correct 9 Principe de la production : À partir des unités lexicales reconnues syntaxiquement correctes, on produit le « module objet » 9 Remarque : Dans le cas dun langage dassemblage, la simplicité de la grammaire permet de réaliser lanalyse syntaxique et la production en utilisant un automate détat fini Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 239
Définitions (1) 9 Identificateur Symbole qui désigne un objet défini par le programmeur 9 Définition dun identificateur Occurrence ui ermet dassocier un ob et à un identificateur 9 Référence à un identificateur Occurrence dun ident. demandant lutilisation de lobjet désigné 9 Référence en avant Référence faite avant la définition de lidentificateur
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 241
Traitement des identificateurs 9 Lobjectif de la traduction : Produire une suite de bits qui est chargée en mémoire et interprétée par la machine pour réaliser le calcul demandé 9 Elle ne produit pas directement cette suite de bits traducteur (assemblage séparé) Cela peut-être inutile, par exemple dans le cas dune directive de type DW 100 DUP (?). Inutile de produire 100 mots ayant une valeur choisie au hasard Il suffit de conserver linformation « ici il faut sauter 100 mots » 9 Lassembleur produit une description (image) de la mémoire au moment de lexécution Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 243
Exemple : MOV AX,12 9 Analyse lexicale : (Séparateur : Espace) MOV (symbole) : correspond à un code dinstruction (Séparateur : Espace) AX s mbole : corres ond à un code de re istre , éparateur : Virgule 12 (12) 9 Analyse syntaxique et production MOV A1: produit la suite de bits correspondant au code de linstruction MOV (table) A2 : produit la suite de bits codant AX (table) A3 : converti les caractères 1 et 2 en 001100 et produit cette suite de bits Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 240
Définitions (2) 9 Référence externe Référence faite à un identificateur défini dans un module externe 9 Expression calculable Ex ression dont tous les éléments sont définis à la rencontre de 9 Expression absolue/translatable Expression dont le résultat est (in)dépendant de limplantation du programme en mémoire
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 242
Construction de lImage de la mémoire 9 Compteur demplacement (CE) Adresse dans le module du prochain emplacement à réserver dans limage de la mémoire Correspond au nombre demplacements déjà réservés 9 Vecteur de translation Informationsindiquant si le contenu de lemplacement doit être translaté ou non Au fur et à mesure de la traduction on va remplir limage du programme et le vecteur de translation, puis mettre à jour le compteur demplacement. Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
244
6
Table des identificateurs (1) 9 Un identificateur désigne : Un emplacement mémoire (donnée ou instruction) Une valeur (qui peut être une adresse) Celles-ci doivent décrire lobjet physique associé Si cest un emplacement mémoire, on lui associe une adresse Si cest une valeur, on lui associe sa représentation binaire Il faut aussi indiquer si lobjet physique est translatable
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 245
Définition dun identificateur (1) 9 Avant référence Quand on traite la définition dun identificateur : vérifier quil ny figure pas déjà avec une autre définition (sinon on a une erreur de double définition) Créer une entrée dans la table des identificateurs (on note cette table Le contenu de cette entrée dépend de la directive associée à lidentificateur Cas dune directive {DB,DW} DUP (?) Information associée = valeur du compteur demplacement Type = translatable Cas dune directive INSTRUCTION Information associée = valeur du compteur demplacement Type = translatable Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 247
Définition dun identificateur (3) 9 Avant référence On recherche lidentificateur dans TAB IDENT, et _ On le trouve (on se place dans le cas où la définition a eu lieu) on se sert des informations trouvée pour faire la traduction La traduction va dépendre du contexte de la référence Contexte : DB,DW <ident> DUP (?) Linformation associée doit-être absolue Info trouvée dans TAB_IDENT = nombre demplacement à réserver
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
249
Table des identificateurs (2) 9 Ces informations de liaison sont stockées dans la table des identificateurs, qui contient : Lidentificateur (son nom) La description de lobjet désigné Linformation associée (adresse de lempl., valeur) ,
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
246
Définition dun identificateur (2) 9 Avant référence Cas dune directive EQU Information associée = info associée à lopérande Type = type de lopérande Si le type de lopérande est une notation de constante Information associée = représentation binaire de la valeur Type = absolu Si le type de lopérande est un identificateur On recherche cet identificateur dans TAB_IDENT et on recopie linfo associée
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 248
Définition dun identificateur (4) 9 Avant référence Contexte : DB,DW <ident> Info trouvée dans TAB_IDENT = valeur à mettre dans lemplacement réservé Type = à mettre dans le vecteur de translation Contexte : EQU <ident> : voir la définition Contexte : INSTRUCTION Info trouvée dans TAB_IDENT = valeur à mettre dans lemplacement réservé Type = à mettre dans le vecteur de translation
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 250
7
Exemple 9 Soit la séquence de déclaration didentificateurs suivante X DB 2 DUP(?) N EQU 3 Y DB N DUP(?) C1 EQU N 9 Remplir la table des identificateur correspondante ident info type X N Y C1 C2 Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 251
Assemblage à deux passages (1) 9 On procède en deux étapes (passes) distinctes On effectue dabord le traitement des définitions des identificateurs, ce qui va permettre de remplir TAB_IDENT Une fois TAB_IDENT remplie, on peut alors traiter les références aux identificateurs (ils sont tous définis)
9 Pour réalis e (1), eut pas se contente danalyser a par e étiquette (partie gauche): X EQU 20 ;à analyser pour donner sa valeur à X Y DW 2 DUP (?) ;à analyser pour incrémenter le Compteur demplacement et donner des valeurs aux identificateurs suivants. Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 253
Assemblage à deux passages (3) 9 Quelle information doit-on conserver ? A priori, il faut conserver le nom de lidentificateur référencé 9 Où cette information va-t-elle être conservé ? Lidentificateur à une taille variable (chaîne de caractère) Si lident est utilisé plusieurs fois on aura des redondances. 9 Solution : on va conserver dans le code objet un pointeur sur lidentificateur.
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
255
Traitement des références avant 9 En (1), on ne peut pas traduire la JMP saut (1) référence à "saut" car on a pas encore vu sa définition. On effectuera cette saut:M…OVAX,… traduction plus tard … … N EQU 30 Y DB 10 9 On va voir deux techniques pour résoudre ce problème Lassemblage en deux passes, dans lequel on traite dabord toutes les définitions, pour seulement ensuite soccuper des références. Lassembleur à pseudo simple passage, qui essaie de gérer la définition et références en même temps. Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 252
Assemblage à deux passages (2) 9 On a deux solutions extrêmes : Le 1er p ge ne fait que remplir T _ assa AB IDENT Le code intermédiaire correspond donc au code source Au 2ème passage on fait toute la traduction, sauf le traitement de la partie étiquette. Le code intermédiaire est donc très proche du code objet Au 2ème passage, il ne reste à traiter que les références en avant. Dans la solution 2, lors dune référence avant, on ne sait pas traduire lidentificateur au 1er passage, Il faut donc conserver dans le code intermédiaire linformation qui permettra de le traduire à la 2ème passe.
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 254
Assemblage à deux passages (4) 9 Comment fait-on ? 1. Le nom de lident est stocké dans TAB IDENT (en notant quil _ sagit dun ident non-défini) 2. On conserve dans le code intermédiaire un pointeur sur lentrée 3. On note dans le Vecteur de Translation que la traduction de cet emplacement nest pas terminée. 4. Au 2ème passage, on va parcourir le Vecteur de Translation pour savoir quelles sont les références à compléter, et où trouver linfo correspondante
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
256
8
JMP FIN (1) … JMP FIN … FIN: MOV BX,AX
Janvier 2010
JMP FIN … JMP FIN … FIN: MOV BX,AX (3)
Exemple (1)
On rencontre en (1) une référence à un identificateur non défini (ici FIN ) Crée une entrée non définie dans TAB_IDENT (N°i) pour FIN Linstruction partiellement traduite inclue un pointeur (i) sur cette entrée Le VT marque cet emplacement comme non complètement traduit
Gaëtan Rey - DUT Informatique de Nice 257
Exemple (3)
On rencontre en (3) une définition de identificateur FIN On complète TAB_IDENT avec les informations correspondantes
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 259
A s s e m b l e u r à p s e u d o -simple passage (1) 9 Principe On veut résoudre le références en avant sans avoir à créer un code intermédiaire que lon relit entièrement. On va produire le code objet en revenant en arrière pour le compléter si besoin. 9 Mise en oeuvre Pour chaque symbole « référence en avant » on tient à jour une liste de tous les emplacements du code objet dans lesquels on a besoin de ranger la valeur du symbole En fait une « liste des trous non traduits »
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
261
JMP FIN … JMP FIN (2) … FIN: MOV BX,AX
Janvier 2010
Exemple (2)
On rencontre en (2) une référence à un identificateur non défini (ici FIN) Linstruction partiellement traduite inclue un pointeur (i) sur cette entrée Le VT marque cet emplacement comme non complètement traduit
Gaëtan Rey - DUT Informatique de Nice 258
Exemple (4) Code source TAB IDENT _ JMP FIN … JMP FIN i FIN 40 translatable … FIN: MOV BX,AX mémoire VT Pendant la 2 ème passe, on parcourt le VT , et on complète les emplacement CE non définis. 40 15 8 -40 trans 20 8 -40 trans 40 6 AX BX abs
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 260
Assembleur à pseudo -s i mp le passage (2) 9 Fonctionnement À la 1 ère référence en avant, on crée une liste des trous pour cet identificateur (la liste ne contenant quun élément) À chaque nouvelle référence en avant, on ajoute lemplacementcorrespondant à la liste. , compléter le code objet avec la valeur du symbole 9 Exemple : (1) MOV AX,S (2)MOV BX,S (3)MOV CX,S (4)S DB 10
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
262
9
Exemple (1) (1)MOV AX,S On rencontre en (1) une référence à lident s : (2)MOV BX,S on crée une entrée vide dans TAB IDENT _ (3)MOV CX,S on y ajoute un pointeur sur lemplacement non (4)S DB 10 traduit TAB IDENT Image mémoire VT _ S i Non défini i MOV AX direct -
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
263
Exemple (3) (1) MOV AX,S On rencontre en (3) une référence à lidentificateur S : (2)MOV BX,S on ajoute un pointeur sur lemplacement j dans (3)MOV CX,S lemplacement k . (4)S DB 10 on met à jour le pointeur de TAB_IDENT à k .
Janvier 2010
Gaëtan Rey - DUT Informatique de Nice
265
Comparaison des méthodes 9 Les deux critères sont rapidité et place mémoire. Le programme source et le code objet sont stockés sur le disque On y accède donc plus lentement quen mémoire 9 Approche à deux passages , . On a besoin que dune seule ligne de code source et de code objet à la fois (peu de place) 9 Approche à pseudo-simple passage Une seule lecture, donc a priori traitement plus rapide MAIS, il faut revenir en arrière sur le code objet, donc il faut pouvoir tout garder en mémoire (sinon on doit faire des accès disques très lents) Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 267
Exemple (2) (1) MOV AX,S On rencontre en (2) une référence à lidentificateur S : (2)MOV BX,S on ajoute un pointeur sur lemplacement i dans (3)MOV CX,S lemplacement j . (4)S DB 10 on met à jour le pointeur de TAB IDENT à j . _ TAB IDENT Image mémoire VT _ S j Non défini i MOV AX direct -j MOV BX direct i
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 264
Exemple (4) (1) MOV AX,S On rencontre en (4) une définition pour S : (2)MOV BX,S on part du pointeur stocké dans TAB_IDENT pour (3)MOV CX,S retrouver tous les emplacements où la référence à S na (4)S DB 10 pas été traduite. Image code VT S 2 trans/d i 89 AX direct 2 j 89 BX direct 2 k 89 CX direct 2
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 266
Traitement dune définition externe 9 Définition externe : Définition dun identificateur qui sera accessible à lextérieur du module. 9 Traitement effectué par lassembleur n t k li ntifi t r i l finiti n xt rn n n a e appe e _ a e es po n s en r es On r p _ AB_IDENT eco ie dans TAB ENTREE les informations de T concernant cet identificateur. NB : TAB_ENTREE fait partie du résultat de lassemblage, et sera donc intégrée au code objet (TAB_IDENT reste interne)
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 268
10
Traitement dune référence externe 9 Référence externe : Référence à un identificateur qui est définit dans un autre module, et quon ne peut donc pas traduire tout de suite. 9 Traitement effectué par lassembleur On va conserver cette références externes : on stocke le nom de son en ca eur ans a a e _ appe e a e es références externes) Au lieu de traduire la référence, on met en place un pointeur sur lidentificateur stocké dans la table des références externes. Onnote dans le vecteur de translation (VT) que lemplacement est non traduit (on marque ext).
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 269
Bilan : traitement des externes 9 À la rencontre de la directive EXTERNE _ On stocke lidentificateur dans TAB EXT 9 À la rencontre de la directive PUBLIQUE
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
271
Bilan : traitement des références _ 9 Ident ∈ TAB EXT Cest une référence à un identificateur externe 9 Ident est défini, ∈ TAB_IDENT et ∉ TAB_EXT 9 Ident est non defini, ∈ TAB_IDENT et ∉ TAB EXT _ Cest une nouvelle référence en avant. _ _ 9 Ident ∉ TAB IDENT et ∉ TAB EXT Cest la première référence en avant à un identificateur local.
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 273
Bilan : définition des identificateurs 9 Table des identificateurs (TAB_IDENT) Contenu = (nom ident, info associée, type, translation) _ Type = (mot | octet | instr | valeur ) Translation (abs | trans | non def ) = (nom_ident, info associée, type, translation) 9 Table des externes (TAB_EXT) Elle contient seulement (nom_ident) 9 Code objet Résultat de la traduction Vecteur de translation = (abs, trans, ext, {non défini})
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 270
Bilan : traitement des définitions 9 Ident ∉ TAB EXT et Ident ∉ TAB IDENT _ _ Définition dun identificateur avant utilisation 9 Ident ∈ TAB EXT _ _ 9 Ident ∈ TAB IDENT et définition Erreur ! Des identificateurs locaux ne peuvent avoir le même nom 9 Ident ∈ TAB_IDENT, et non définition Définition dun identificateur pour lequel on a eu des références en avant
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 272
Bilan : résultats de la traduction _ 9 TAB EXT : table des références externes. _ 9 TAB ENTREE : table des définitions externes. 9 Image mémoire + Vecteur de Translation. Taille de limage mémoire Nombre de définitions externes. 9 Adresse de la 1ère instruction à exécuter. 9 Toutes ces informations sont stockées dans le fichier objet produit par lassembleur.
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice