Schémas d exécution d un programme

Documents pareils
Cours 1 : La compilation

Évaluation et implémentation des langages

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Bases de programmation. Cours 5. Structurer les données

Annexe : La Programmation Informatique

Chapitre I Notions de base et outils de travail

Conventions d écriture et outils de mise au point


Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Quelques éléments de compilation en C et makefiles

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Plan du cours. Historique du langage Nouveautés de Java 7

Environnements et Outils de Développement Cours 1 Introduction

Traduction des Langages : Le Compilateur Micro Java

Algorithmique et Programmation, IMA

Programmation C. Apprendre à développer des programmes simples dans le langage C

Machines virtuelles Cours 1 : Introduction

Optimisation de logiciels de modélisation sur centre de calcul

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Gé nié Logiciél Livré Blanc

Éléments de programmation et introduction à Java

modules & compilation

UE Programmation Impérative Licence 2ème Année

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours 1 : Qu est-ce que la programmation?

Programmation parallèle et distribuée

TP1 : Initiation à Java et Eclipse

ALGORITHMIQUE ET PROGRAMMATION En C

F. Barthélemy. 17 mai 2005

La Certification de la Sécurité des Automatismes de METEOR

Bases Java - Eclipse / Netbeans

Langages et Concepts de Programmation Introduction à la programmation en langage C

Outils pour la pratique

TP1. Outils Java Eléments de correction

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

1 Description générale de VISFIELD

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Cours Langage C/C++ Programmation modulaire

Initiation à l algorithmique

Une introduction à Java

Concept de machine virtuelle

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

IV- Comment fonctionne un ordinateur?

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Classes et Objets en Ocaml.

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Vérification formelle de la plate-forme Java Card

Installation et prise en main

Rappel sur les bases de données

Algorithmique avec Algobox

Efficacité énergétique pour les particuliers : une solution pour le monitoring énergétique

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

L informatique en BCPST

Cours de Programmation 2

TP Bases de données réparties

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Conception de circuits numériques et architecture des ordinateurs

ACTIVITÉ DE PROGRAMMATION

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Câblage des réseaux WAN.

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Introduction à l algorithmique et à la programmation (Info 2)

Algorithme. Table des matières

Donnez à votre téléphonie d entreprise une autre dimension. Economie, flexibilité, liberté BUSINESS PHONE

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours Programmation Système

Initiation. àl algorithmique et à la programmation. en C

Généralités sur le Langage Java et éléments syntaxiques.

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Machines Virtuelles. et bazard autour. Rémi Forax

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Introduction à la Programmation Parallèle: MPI

Création du projet : 1 sur 13

Télécom Nancy Année

Introduction à Eclipse

Simplifier l intégration des systèmes RH et garantir une version unique des données de l employé. D

Cours d Algorithmique et de Langage C v 3.0

Solution logicielle pour le pilotage et l ERM. Journées d études IARD 26 mars mars 2010

Votre Réseau est-il prêt?

Export et Import de modèles ICAR sous Trnsys 17

GPS GARMIN ETREX 30 GESTION DES FICHIERS GPX

Bienvenue à l historien virtuel 2.0

Java - la plateforme

Initiation à JAVA et à la programmation objet.

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Didacticiel Études de cas. Description succincte de Pentaho Data Integration Community Edition (Kettle).

REALISATION D UNE CALCULATRICE GRACE AU LOGICIEL CROCODILE CLIPS 3.

Présentation du PL/SQL

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Transcription:

Schémas d exécution d un Un P dans un langage (impératif) L décrit une suite d à exécuter par une machine (virtuelle) M L Le est une suite d instructions dont chacune spécifie une action (passage d un état initial à un état final) La machine M L est capable d exécuter (interpréter) le P, c est-à-dire de traduire en de M L la suite d instructions de P. Comment faire si on ne dispose pas de la machine M L, mais d une machine différente, M phys? Deux solutions de base a) Traduire le P dans un P obj équivalent pour la machine M phys, et faire exécuter P obj sur M phys ( équivalent = qui a le même effet). C est un schéma de compilation (la traduction de P en P obj est faite par un ) b) Construire (par ) sur M phys un simulateur de la machine M L, et faire exécuter le original P sur ce simulateur. C est un schéma d interprétation (le simulateur de M L sur M phys est un interprète) Une solution mixte est possible compiler P pour une machine intermédiaire M int ; construire un interprète de M int sur M phys 5-1 Compilation et interprétation : principe phase de compilation objet phase d exécution P P obj exécution M L M phys (ou autre) M phys instruction I comp suite d instructions traduisant I machine virtuelle machine physique machine physique exécution sur M phys interface de M L simulateur de M L sur M phys machine physique P interprète M phys phase unique d exécution instruction I prog ramme simulant l effet de I exécution sur M phys Exemples compilation : C, C++, Fortran, Ada interprétation : lang. machine, shell Unix, Tcl-TK, PostScript l un ou l autre : Lisp, Scheme schéma mixte : Java (cf plus loin), Smalltalk 5-2

Compilation et interprétation : comparaison Compilation Interprétation È Efficacité le code engendré s exécute directement sur la machine physique ce code peut être optimisé Í Mise au point pas toujours facile de relier une erreur d exécution au texte Í Cycle de modification - rééxécution toute modification du texte impose de refaire le cycle complet (compilation, édition de liens, exécution) Í Efficacité l interprétation directe est souvent longue (appel de sous-s) pas de gain sur les boucles facteur de x10 à x100 È Mise au point lien direct entre instruction et exécution possibilités étendues d observation et trace intégrées È Cycle de modification - rééxécution cycle très court (modifier et réexécuter) L augmentation de puissance des processeurs amène un regain des techniques d interprétation 5-3 Schéma mixte d exécution Objectifs Principe Essayer de combiner les avantages des schémas de compilation et d interprétation Améliorer la portabilité des s entre machines, via un langage intermédiaire standard Définir un langage intermédiaire et une machine virtuelle capable d interpréter ce langage Écrire un du langage initial () vers le langage intermédiaire Écrire un interprète du langage intermédiaire (c est-à-dire un simulateur de la machine virtuelle) compilation (javac) Exemple : Java La phase de compilation est indépendante de la machine physique Portage sur une nouvelle machine = réécriture de la JVM sur cette machine programe (.java) Java bytecodes (.class) Java Virtual Machine (JVM) machine physique 5-4 exécution (java)

Principe de fonctionnement d un interprète (1) Définition de la machine virtuelle Éléments du pseudo-processeur (analogie avec processeur physique) pseudo-registres (zones de mémoire réservées) pseudo-instructions (réalisées par une bibliothèque de s) Structures d exécution allocation des variables pile d exécution Cycle d interprétation Analogie avec cycle d un processeur Pseudo-compteur ordinal initialisation lire instruction suivante données (registres, variables, pile) exécuter instruction si instruction de terminaison fin 5-5 Principe de fonctionnement d un interprète (2) Raffinement de la boîte exécuter instruction Format de l'ïnstruction : instruction ::= <code opération>, <suite de paramètres> Opérations Décoder instruction (isoler code op., paramètres) selon code op faire code 1 : exécuter de code 1 (paramètres) code n : exécuter de code n (paramètres) Exécution du correspondant à un code op. Dépend de l instruction, mais quelques points communs allouer éventuellement place en mémoire pour données charger paramètres dans registres ou pile exécuter l opération sur les paramètres mettre éventuellement à jour les résultats en mémoire déterminer l instruction suivante à exécuter Autres opérations possibles Observation, mise au point (exécution pas à pas), trace Transformation préalable du dans une forme adaptée à l exécution (postfixé, etc.) 5-6

Cycle de vie d un compilé Compilation vers objet absolu (adresses fixées en mémoire) prog. objet absolu contrainte : le ne peut pas être déplacé en mémoire (par ex. pour le combiner avec d autres) Compilation vers objet translatable (adresses définies à une translation près) prog. objet translatable chargeur prog. objet absolu Exemples nécessité de passer par un chargeur pour rendre le exécutable (le translatable n est pas exécutable tel quel) gcc -c prog.c ; produit un objet translatable dans le fichier prog.o gcc -o prog prog.c ; produit un objet absolu dans le fichier prog (appelle le et le chargeur) 5-7 Code exécutable et chargeurs Nous illustrons le fonctionnement du chargeur avec un format simple d instructions machine <code-op> <registre><adresse> Programme objet absolu (exécutable) : toutes les adresses sont absolues Programme objet translatable (ou relogeable) : les adresses sont relatives au début du absolu (à partir de l adresse 24000) translatable 24000 0 BRN,R1 TOTO 48 1 25010 24200 48 1 1010 200 TOTO: LI, R2 5 87 2 5 25010 87 2 5 1010 BRN = branchement si R<0 LI = chargement immédiat 5-8

Fonctionnement d un chargeur Format du binaire translatable toutes les informations dans la partie adresse ne sont pas translatables il faut donc un indicateur associé à toute adresse, signalant si elle est translatable ou non ; cet indicateur est placé par le lors de la génération du code Fonctionnement du chargeur l adresse absolue de chargement A est fournie en paramètre algorithme du chargeur: Illustration de la notion de liaison copier le segment St contenant le binaire translatable dans un segment Sa pour toute adresse a contenue dans le segment Sa faire si a translatatable alors a = a +A le segment Sa contient maintenant le binaire absolu liaison = étabissement de la relation entre une entité (abstraite) et sa réalisation physique binaire objet binaire objet translatable absolu identificateur adresse relative dans segment chargeur adresse absolue 5-9 Composition de s Pourquoi parler de composition de s? La plupart des applications sont réalisées par assemblage de parties construction modulaire, facilite la conception et l évolution des s La plupart des applications utilisent des fonctions founies par des bibliothèques Conséquence : un ne s exécute pratiquement jamais seul Le problème de la composition : encore un exemple de liaison Soit un P faisant appel à une procédure p incluse dans un Q construit séparément Question : lors de la compilation de P, quelle adresse va-t-on associer à p? Réponse : il est impossible de le savoir tant qu on ne connaît pas le Q La liaison dans P entre la procédure p et son adresse ne peut être faite que dans une phase postérieure à la compilation, utilisant simultanément P et Q : c est l édition de liens P Q P utilise (ou importe) p appel de p texte de p Q fournit (ou exporte) p 5-10

Fonctionnement d un éditeur de liens (1) P utilise (ou importe) p appel de p P Q texte de p Q fournit (ou exporte) p P 0 24 binaire translatable??? 0 binaire translatable Phase de compilation de P Q 0 178 j ai besoin de p à l adresse relative 24 procédure p éditeur de liens 342 342 complet (P+Q) procédure p Phase de compilation de Q je fournis p à l adresse relative 178 Phase d édition de liens 5-11 Fonctionnement d un éditeur de liens (2) Format du binaire translatable (très simplifié) En général, un importe certains noms et en exporte d autres utilisation de la procédure proc (importée) 54 68 346 68-1 nil procédure proc1 (fournie) Dans le binaire translatable, le crée une table des références externes pour les noms importés et une table des définitions externes pour les noms exportés. Ces tables sont utilisées par l éditeur de liens "proc1" 346 table des définitions externes "proc" 54 table des références externes 5-12

Fonctionnement d un éditeur de liens (3) Principe de l éditeur de lien à 2 passes (simplifié) Phase initiale : l éditeur de liens réunit bout à bout l'ensemble des segments binaires translatables pour faire un segment objet unique. Toute information a alors une adresse (relative) dans ce segment objet (le binaire translatable global) Passe 1 : collecte des références. À partir des tables des définitions externes, l éditeur de liens construit une table globale des symboles. Une entrée de cette table contient le nom d une procédure fournie et l adresse (relative) correspondante dans le segment objet. Passe 2 : résolution des références externes. À partir des tables des références externes, l éditeur de liens retrouve toutes les instructions faisant référence à une procédure externe, et met dans la partie adresse de chacune de ces instructions l adresse relative trouvée dans l entrée de la table globale des symboles correspondant à la procédure externe utilisée. À la fin de la passe 2, toutes les références externes doivent avoir été résolues. Si ce n est pas le cas, l éditeur de liens signale les références non résolues, et le global ne peut pas être exécuté. Le global doit encore passer par le chargeur pour obtenir un binaire exécutable. Souvent, la fonction du chargeur est incluse dans l éditeur de liens, qui produit alors directement le binaire exécutable. 5-13 Exemples La commande gcc permet d appeler à la fois le, l éditeur de liens et le chargeur gcc prog.c ; produit (par défaut) le binaire exécutable dans le fichier a.out gcc -o prog prog.c ; produit le binaire exécutable dans le fichier prog gcc -c prog.c ; produit (par défaut) le binaire translatable dans le fichier prog.o Supposons qu un soit composé de deux parties prog1.c et prog2.c. Alors : gcc prog1.c prog2.c produit le binaire exécutable du complet dans a.out gcc - c prog1.c prog2.c produit les deux binaires translatables prog1.o et prog2.o gcc -o prog prog.o prog1.o produit le binaire exécutable du complet dans prog, à partir des binaires translatables prog1.o et prog2.o Utilisation de bibliothèques On peut rechercher les références externes dans des collections de s appelées bibliothèques, ou archives, fournies par le système sous forme de binaires translatables pour les utilitaires courants On spécifie alors -l<nom>, et l éditeur de liens recherche la bibliothèque lib<nom>.a On peut spécifier des règles de recherche (où trouver les bibliothèques, etc.) 5-14

Schéma général d exécution de s pré-processeur binaire translatable analyseur générateur de code éditeur de liens chargeur arbre syntaxique binaire translatable binaire exécutable traducteur interprète générateur de code machine physique code intermédiaire interprète 5-15 Résumé de la séance 5 Exécution de s Programmes compilés, s interprétés Avantages respectifs des deux schémas, schémas mixtes Principe de fonctionnement d un interprète Cycle de vie d un compilé Programmes translatables, principe d un chargeur Composition de s, principes d un éditeur de liens Première idée de la notion de liaison mise en correspondance d un nom et d une adresse 5-16