La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot

Présentations similaires


Présentation au sujet: "1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot"— Transcription de la présentation:

1 1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot girardot@emse.fr http://kiwi.emse.fr/ASI Quatrième séance Introduction à la Compilation Cours Architecture des Systèmes Informatiques

2 2 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Plan  Concepts des processeurs : la pile  Le simulateur pédagogique, suite…  Langage machine, langage d’assemblage  Compilation et génération de code Expressions arithmétiques, boucles, sous-programmes Module objet, exécutable  Allocation des variables Statique, automatique, dynamique  Utilisation de la pile Notion de cadre

3 3 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Terminologie  Source (code, programme) : texte rédigé par le programmeur dans un langage de programmation “évolué”  Objet (code, programme) : traduction en langage de la machine d’un texte source  Exécutable : programme obtenu en assemblant un programme objet et l’ensemble des sous-programmes nécessaires à son exécution  Assembleur : génère du code objet à partir d’un programme en langage d’assemblage (source)  Compilateur : génère du code objet à partir d’un programme source en langage de haut niveau (Pascal, C…)  Éditeur de liens : rassemble des modules objets pour constituer un programme exécutable  Chargeur : installe en mémoire centrale un programme en vue de son exécution

4 4 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. La pile du processeur  Qu’est-ce, à quoi sert-elle ? Portion de la mémoire centrale Référencée par un registre spécifique, le “pointeur de pile”, stack pointer “Empiler” une valeur :  a: déplacer le pointeur de pile de ± un mot  b: écrire la valeur dans le mot désigné par le pointeur de pile  Note: certaines machines font b, puis a… “Dépiler” une valeur : effectuer les opérations inverses :  b: lire le mot pointé par le registre de pile  a: déplacer le pointeur de pile en sens inverse

5 5 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. La pile : outil des sous-programmes  Gestion des appels et retour de sous-programmes 2 instructions :  Appel de sous-programme :  Empiler la valeur du pointeur programme (PC)  Se brancher à l’adresse du sous-programme  Retour de sous-programme :  Dépiler une valeur [le pointeur programme sauvegardé avant l’appel]  Affecter cette valeur au pointeur programme

6 6 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. La machine mac : opérations sur la pile  Tout registre peut servir de pointeur de pile  Empiler : PUSH, 0x0D  Rx <- [Rx] - 2 MemW[[Rx]] <- valeur  Formats : court/long, immédiat/direct/indirect-indexé  Dépiler : POP, 0x0E  destination <- MemW[[Rx]] Rx <- [Rx] + 2  Formats : court/long, direct/indirect-indexé [pas de mode immédiat]

7 7 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. La machine mac : appels et retour de sous-programme  Appel : JSR, Jump to SubRoutine, 0x0C  Rx <- [Rx] - 2 MemW[[Rx]] <- PC PC <- adresse-du-sous-programme  Formats : pas de mode court immédiat  Retour : RET, Return, 0x1C  PC <- MemW[[Rx]] Rx <- [Rx] + 2  Format : court immédiat :  0 00 11100 xxxx 0000

8 8 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. La machine mac : autres opérations  Appel du superviseur : TRAP, 0x1A  Format court immédiat : 0 00 11010 xxxx yyyy  Appel niveau X, sous-niveau Y.  c.f. manuel pour les différentes fonctions…  Opération ineffective : NOP, No OPération, 0x1B  Format court immédiat : 0 00 11011 0000 0000  Ne modifie ni la mémoire, ni les registres  Arrêt : HALT, 0x1E  Format court immédiat : 0 00 11110 0000 0000  Arrêt du calculateur, lève l’exception ErrHalt

9 9 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Le simulateur sim  Modèle logiciel de la machine mac  Émulateur de la machine virtuelle : Simule registres et mémoire centrale Interprète les codes instructions Gère les erreurs/exceptions  Metteur au point Visualise et modifie mémoire et registres Lance et interrompt la machine virtuelle Trace les instructions Visualise les registres modifiés en cours d’exécution

10 10 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Les commandes du simulateur  Syntaxe des commandes Mot clef: /xxx suivi de compléments éventuels Ex :  /R2 impression du contenu du registre R2  /PSW impression des drapeaux et de PC  /run 2FC0 exécuter le programme débutant en 0x2FC0  /dm 1000 20 imprimer le contenu de la zone de mémoire de 32 octets débutant en 4096  /R2=237 affectation de la valeur 567 à R2 c.f. manuel pour l’ensemble des commandes

11 11 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Exemples  Placer la valeur 3 dans le registre R5 /R5 = 3  Note : constantes en hexadécimal…  Écrire un programme qui place 3 dans R5 ld r5,#3 code : 0 00 00001 0101 0011 Placer l'instruction en mémoire, par exemple en 0  /addr 0 /sw 0153  Exécuter l'instruction  /step 0  Vérifier  /r5 

12 12 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Exemple d'utilisation : calcul du PGCD de deux nombres  Programme chargé à l'adresse 1000 TEST:CMPR2,R310002523 JEQFIN10028F10 1016 JLSUITE10068F40 1010 LDR0,R3100A2103 LDR3,R2100C2132 LDR2,R0100E2120 SUITE:SUBR3,R210102432 JMPTEST10128F00 1000 FIN:HALT10161E00

13 13 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Exemple d'utilisation : calcul du PGCD de deux nombres  Mise en mémoire du programme /addr 1000 /sw 2523 8f10 1016 8f40 1010 /sw 2103 2132 2120 2432 8f00 1000 1e00  Positionnement des registres /r2=+7953 /r3=+12291  Lancement de l'exécution /run 1000 réponse : psw = 0502 1018  Consultation du résultat /r2 réponse : r2 = 0x02D3 723/723 2,-45 ‘ ‘

14 14 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Tests sous sim  Créer sous un éditeur le fichier de commandes  Utilisation directe du simulateur sim < pgcd.sim  Utilisation interactive sim /rd "pgcd.sim" /run 0 Mise au point  /db 1 : trace des registres modifiés  /db 2 : trace des instructions

15 15 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Langage d’assemblage  Représentation symbolique des instructions Syntaxe : [étiquette:] opération [opérandes] Symboles :  registres, ex : R1, R2, R15, étiquettes, variables…  opérations LD, ADD, SUB, ST…  nombres (décimal, hexadécimal, octal, binaire, caractère) Sémantique :  combinaison code opération et des opérandes  Une instruction assembleur = une instruction machine

16 16 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Assembleur  Outil permettant le passage du langage d’assemblage au langage machine ; “machine dependent” Instructions Commentaires Directives ou “pseudo-instructions”  DATA, ORG, BSS, START…  Fournit : Binaire “absolu”/“core image”/“exécutable” ; ex l’assembleur ASM Binaire “translatable”, ou programme objet.

17 17 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. L'assembleur asm  Programme réalisant la transformation d'instructions exprimées en assembleur en code chargeable par le simulateur Syntaxe  Toutes les instructions de la machine (c.f. manuel)  Commentaires : * …  Directives :  ORG : nouvelle adresse d'implantation des instructions suivantes  BSS : réservation d'une zone de mémoire  DATA : création d'une donnée initialisée occupant un mot  START : définition de l'adresse de début du programme

18 18 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Transformation de PGCD en un programme assembleur ORG0x1000 PGCD:CMP R2,R3 JEQFIN JLTSUITE LDR0,R3 LDR3,R2 LDR2,R0 SUITE:SUBR3,R2 JMPPGCD FIN:RETR15 MAIN:LA.LR15,PILE LD.LR2,#1144 LD.LR3,#858 JSRR15,PGCD LD.LR3,#1287 JSRR15,PGCD HALT BSS16 PILE:DATA0 START MAIN

19 19 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Le code généré et l’exécution /addr 1000 /w 2523 8f10 1016 8f40 1010 2103 2132 2120 /w 2432 8f00 1000 1cf0 abf0 1042 8120 0478 /w 8130 035a 8cf0 1000 8130 0507 8cf0 1000 /w 1e00 /addr 1042 /w 0000 /run 1018 /rd “pgcd.sim” /run 1018 psw = 0501 1032 /r2 r2 = 0x008f 143/143 0,-113 ‘ ‘

20 20 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Langages de “haut niveau”  Langages compilés Un outil (compilateur) transforme le programme source en un programme objet, ou un programme “core image” Exemples : C, C++, Pascal, FORTRAN, ADA, COBOL, etc.  Langage interprété Un outil (interprète) lit le programme source et (après transformations diverses) l’exécute directement. Exemples : APL, LISP, Perl, CAML, etc.  Approches intermédiaires - ex: SIM Source  code machine virtuelle, interprétation du code

21 21 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Étapes de l’exécution d’un programme  Compilation : traduction d’un langage source vers un langage objet  Assemblage : traduction d’un programme source en assembleur vers un langage objet  Édition de liens : création d’un programme exécutable, rassemblant des modules objets et les sous-programmes de bibliothèque nécessaires à l’exécution  Exécution : chargement en mémoire centrale du programme exécutable ; le “chargeur” lui “donne la main”

22 22 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Compilateur  Lit un programme en un langage dit “de haut niveau” C, C++, Pascal, Fortran, Ada : langage source  Convertit les instructions du programme en commandes pour la machine : langage machine, dit langage cible  A une instruction du langage source correspondent en général plusieurs instructions du langage cible.

23 23 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Module objet  Résultat d’une compilation ou d’un assemblage Structure de données  segments de code machine  valeurs d’initialisation données  liste des “externes” et “points d’entrée”  informations de contrôle / mise au point Format d’entrée pour l’éditeur de liens

24 24 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Module exécutable  Résultat d’une édition de liens Structure de données  segments de code machine  valeurs d’initialisation des données  liste des “externes” et “points d’entrée”  les externes sont “résolus”  informations de contrôle / mise au point Format d’entrée du chargeur Peut contenir des “externes” non résolus  chargement dynamique

25 25 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Traduction  Comment réalise-t-on sur la machine la représentation des éléments du langage source ? Variables  TP 4  variables globales statiques, variables locales automatiques Sous-programmes  Représentation  Appel et retour.

26 26 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Un langage et son compilateur : mcc  mcc : “mini C compiler” Sous-ensemble du langage C  type de données unique : entier 16 bits  pas de structures de données Compilateur minimal  pas de pré processeur  pas d'optimisation du code généré  fournit de l'assembleur en format source Utilisation  compilation => assemblage => simulation

27 27 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Compilation - 1  Expressions arithmétiques int a,b,c; a = 2; b = 5; c = (a+3)*(b-1); ldr2,#2 st.lr2,@a ldr2,#5 st.l r2,@b ld.lr2,@a addr2,#3 ld.lr3,@b subr3,#1 ldr0,r2 mulr3 ldr2,r1 st.lr2,@c... @a:data0 @b:data0 @c:data0

28 28 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Compilation - 2  Boucles int i; i=0; while (i<10) i=i+1; ldr2,#0 st.lr2,@i @1002: ld.lr2,@i ldr3,#10 cmpr2,r3 jlt@1004 ldr2,#0 jmp@1005 @1004: ldr2,#1 @1005: jeq.l@1003 ld.lr2,@i addr2,#1 st.lr2,@i jmp@1002 @1003:... @i:data0

29 29 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Un exemple : PGCD de 2 nombres  Le programme C int x, y, z; main() { x = 7953; y = 12291; while (x != y) { if (x > y) { z=x; x=y; y=z; } y = y-x; } // out (x); }

30 30 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Le code assembleur (presque complet) @main: ld.lr2,#7953 st.lr2,@x ld.lr2,#12291 st.lr2,@y @1003: ld.lr2,@x ld.lr3,@y cmpr2,r3 jne@1005 ldr2,#0 jmp@1006 @1005: ldr2,#1 @1006: jeq.l@1004 ld.lr2,@x ld.lr3,@y cmpr2,r3 jgt@1007 ldr2,#0 jmp@1008 @1007: ldr2,#1 @1008: jeq.l@1002 ld.lr2,@x st.l r2,@z ld.lr2,@y st.lr2,@x ld.lr2,@z st.lr2,@y @1002: ld.lr2,@y ld.lr3,@x subr2,r3 st.lr2,@y jmp.l@1003 @1004: halt start@main @a:data0 @b:data0 @c:data0

31 31 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Compilation : sous-programmes  Passer des paramètres aux sous-programmes Valeurs transmises dans les registres R2, R3, R4, R5 …  Que fait le compilateur ? Le registre R14 est sauvegardé dans la pile Le registre R14 pointe sur la pile à l’entrée du sous-programme Les registres R2, R3, R4 … sont empilés Les paramètres sont désignés par -2(R14), -4(R14) … Les valeurs des registres sont restaurées à la sortie du sous-programme Le résultat de la fonction est rendu dans R0 Les sous-programmes peuvent être récursifs.

32 32 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Compilation - 3  Sous-programmes int incr(int x) { return x+1; } main(){ incr(3); } @1000: ld.l r2,-2(r14) add r2,#1 ld r0,r2 jmp.l @1001 @1001: pop r15,r2 ld r15,r14 pop r15,r14 ret r15 @incr: push r15,r14 ld r14,r15 push r15,r2 jmp.l @1000 @1002: ld r2,#3 jsr.l r15,incr ld r2,r0 halt main: ld r14,#0 ld r15,#0 jmp.l @1002 start main


Télécharger ppt "1 École des Mines de Saint-Etienne. 158, cours Fauriel. 42 023 Saint-Etienne Cedex 2. Tél. 04 77 42 01 23. Fax. 04 77 42 66 66. Jean-Jacques Girardot"

Présentations similaires


Annonces Google