Cours ASR2
16 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
16 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

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

Sujets

Informations

Publié par
Nombre de lectures 60
Langue Français

Extrait

Cours Architecture (ASR 2) Gaëtan Rey
IUT de Nice - Côte dAzur 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é  un contrô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 à lexam 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 dune machine ? 9 Comment sexé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  Sapproprier 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 LeRs AmMémo)ires Vidéos 9 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 Introduction 9 Représentation de linformation 9 Arithmétique binaire 9 Algèbre de Boole 9 Architecture type Von Neumann 9 Couche dassemblage / Assembleur 8086 9 Mécanismes dinterruptions 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 dun 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 dexécution 9 Assembleur/Traducteur (exemple : MASM, TASM)  Lassembleur est chargé deffectuer la traduction dun 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 dinitialiser 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à lexécution, on va sintéresser à la partie du travail effectuée avant lexé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 à lidentificateur 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,  Instruction machine qui contient un déplacement (basé)  Liaison = associer un déplacement à lidentificateur
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 221
Janvier 2010
Machine à un niveau dadressage
Gaëtan Rey - DUT Informatique de Nice
223
Machine à 1 et 2 niveaux dadressages
Le code nest pas lié à ladresse Le code est lié à ladresse dimplantation des données dans la dimplantation 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 lexécution  Pas didentificateur désignant directement un élément du tas  Liaison = adresse de linstruction dans le programme
Janvier 2010
Janvier 2010
Gaëtan Rey - DUT Informatique de Nice 222
Machine à deux niveaux dadressage
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 quun module à la fois :  Les adresses produites sont des adresses à lintérieur de chaque module formant le programme.  Il ne peut pas traduire laccè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 dadressage)
Gaëtan Rey - DUT Informatique de Nice
231
extern procédure SP2(ent a);
Mécanisme de liaison
référence externe : Lobjet est utilisé dans le module, mais défini à lexté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 dadresses qui sont fonction de la taille des modules formant le programme  Ladresse de u dans le module M2 est 0  Ladresse de u dans le ro ramme com let est 6 9 Il reste encore à translater les adresses dans le programme avec ladresse dimplantation 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 dadr ge)
Gaëtan Rey - DUT Informatique de Nice
232
4
Exercice 9 Donner le résultat de la traduction complète de lexemple vu précédemment, en indiquant pour chaque instruction si elle nécessite une translation.  On suppose quil 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 dun 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 dune 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 quon vient de voir  Sémantique (on va différencier les identificateur des directives et des mnémoniques dinstructions en consultant des tables) Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 234
Grammaire (2) 9 Exemple de grammaire : expression Æ ( expression opérateur expression ) expression Æ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 opérateur Æ + | - | * | / expression ( expression opérateur expression ) ( 3 opérateur expression ) ( 3 + expression ) ( 3 + ( expression opérateur expression )) ( 3 + ( 2 opérateur expression )) ( 3 + ( 2 * expression )) ( 3 + ( 2 * 5 ))   Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
236
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 lanalyse 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 dun langage dassemblage, la simplicité de la grammaire permet de réaliser lanalyse 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 dun identificateur  Occurrence ui ermet dassocier un ob et à un identificateur 9 Référence à un identificateur  Occurrence dun ident. demandant lutilisation de lobjet désigné 9 Référence en avant  Référence faite avant la définition de lidentificateur
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 241
Traitement des identificateurs 9 Lobjectif 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 dune directive de type DW 100 DUP (?). ƒ Inutile de produire 100 mots ayant une valeur choisie au hasard ƒ Il suffit de conserver linformation « ici il faut sauter 100 mots » 9 Lassembleur produit une description (image) de la mémoire au moment de lexé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 dinstruction    (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 linstruction MOV (table)  A2 : produit la suite de bits codant AX (table)  A3 : converti les caractères 1 et 2 en 001100 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 limplantation du programme en mémoire
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 242
Construction de lImage de la mémoire 9 Compteur demplacement (CE)  Adresse dans le module du prochain emplacement à réserver dans limage de la mémoire  Correspond au nombre demplacements déjà réservés 9 Vecteur de translation  Informations indiquant si le contenu de lemplacement doit être translaté ou non Au fur et à mesure de la traduction on va remplir limage du programme et le vecteur de translation, puis mettre à jour le compteur demplacement. 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 lobjet physique associé ƒ Si cest un emplacement mémoire, on lui associe une adresse ƒ Si cest une valeur, on lui associe sa représentation binaire  Il faut aussi indiquer si lobjet physique est translatable
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 245
Définition dun identificateur (1) 9 Avant référence  Quand on traite la définition dun identificateur : ƒ vérifier quil ny 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 dune directive {DB,DW} DUP (?) ƒ Information associée = valeur du compteur demplacement ƒ Type = translatable  Cas dune directive INSTRUCTION ƒ Information associée = valeur du compteur demplacement ƒ Type = translatable Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 247
Définition dun identificateur (3) 9 Avant référence  On recherche lidentificateur 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 (?) ƒ Linformation associée doit-être absolue ƒ Info trouvée dans TAB_IDENT = nombre demplacement à 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 :  Lidentificateur (son nom)  La description de lobjet désigné ƒ Linformation associée (adresse de lempl., valeur)  , ƒ
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
246
Définition dun identificateur (2) 9 Avant référence  Cas dune directive EQU ƒ Information associée = info associée à lopérande ƒ Type = type de lopérande        ƒ Si le type de lopérande est une notation de constante  Information associée = représentation binaire de la valeur  Type = absolu ƒ Si le type de lopérande est un identificateur  On recherche cet identificateur dans TAB_IDENT et on recopie linfo associée
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice 248
Définition dun identificateur (4) 9 Avant référence  Contexte : DB,DW <ident>  ƒ Info trouvée dans TAB_IDENT = valeur à mettre dans lemplacement 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 lemplacement 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 didentificateurs 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 dabord 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 danalyser 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 demplacement 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 lidentificateur référencé 9 Où cette information va-t-elle être conservé ? ƒ Lidentificateur à une taille variable (chaîne de caractère) ƒ Si lident est utilisé plusieurs fois on aura des redondances. 9 Solution : on va conserver dans le code objet un pointeur sur lidentificateur.
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:MOVAX,traduction plus tard … … N EQU 30 Y DB 10 9 On va voir deux techniques pour résoudre ce problème  Lassemblage en deux passes, dans lequel on traite dabord toutes les définitions, pour seulement ensuite soccuper des références.  Lassembleur à 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 dune référence avant, on ne sait pas traduire lidentificateur au 1er passage, ƒ Il faut donc conserver dans le code intermédiaire linformation 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 lident est stocké dans TAB IDENT (en notant quil _ sagit dun ident non-défini) 2. On conserve dans le code intermédiaire un pointeur sur lentrée 3. On note dans le Vecteur de Translation que la traduction de cet emplacement nest 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 linfo 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 ƒ Linstruction 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 lon 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) ƒ Linstruction 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 quun élément)  À chaque nouvelle référence en avant, on ajoute lemplacement correspondant à 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 à lident 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 lemplacement 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 à lidentificateur S : (2)MOV BX,S ƒ on ajoute un pointeur sur lemplacement j dans (3)MOV CX,S lemplacement 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 quen mémoire 9 Approche à deux passages  , .  On a besoin que dune 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 à lidentificateur S : (2)MOV BX,S ƒ on ajoute un pointeur sur lemplacement i dans (3)MOV CX,S lemplacement 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 na (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 dune définition externe 9 Définition externe :  Définition dun identificateur qui sera accessible à lextérieur du module. 9 Traitement effectué par lassembleur  n t k li 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 lassemblage, 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 dune référence externe 9 Référence externe :  Référence à un identificateur qui est définit dans un autre module, et quon ne peut donc pas traduire tout de suite. 9 Traitement effectué par lassembleur  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 lidentificateur stocké dans la table des références externes.  On note dans le vecteur de translation (VT) que lemplacement 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 lidentificateur 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  Cest 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 _  Cest une nouvelle référence en avant. _ _ 9 Ident TAB IDENT et TAB EXT  Cest 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 dun 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 dun 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 limage 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 lassembleur.
Janvier 2010 Gaëtan Rey - DUT Informatique de Nice
274
11
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents