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

Slides:



Advertisements
Présentations similaires
Architecture de machines Le microprocesseur
Advertisements

Rappels C.
Introduction au langage C
Sémantique des déclarations pour le langage Z minimal
Introduction: Concepts de la programmation
Spécification et qualité du logiciel
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
la programmation en langage C
C.
Objectifs Nous allons concevoir une mise en œuvre contenant un noyau de jeu d’instructions. Nous verrons comment l’architecture de jeu d’instructions.
Le Concept du programme enregistré
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Introduction : Compilation et Traduction
Architecture de machines Principes généraux
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Langage C Licence Informatique 3ème année
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
CPI/BTS 2 Programmation Web Introduction au PHP
Introduction : Compilation et Traduction
Démarche de résolution de problèmes
Les éléments de base de l’algorithmique
Programme et Langage C++
Évaluation et implémentation des langages
Séances de soutien Projet informatique 2A
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Introduction à la programmation (Java)
Système d’exploitation : Assembleur
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Bases de la programmation en C++
Présentation du mémoire
Environnements d'exécution
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
1-1 Chapitre 5: Les variables Introduction Les noms Les variables Les attributions (bindings) Portée et durée de vie L'environnement de référence Les noms.
Standard Template Library
Séance d’introduction
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Programmation non procédurale Le projet ECOLE 2000
Les différents langages de programmation
Logique programmée & Microprocesseurs
Le langage C Rappel Pointeurs & Allocation de mémoire.
Paradigmes des Langages de Programmation
Cours Architecture des Systèmes Informatiques
JavaScript.
ALGORITHMIQUE ET PROGRAMMATION C
TD0 - Rappels. Acquis du programme 1 ère année Analyser et modéliser : un problème, une situation ; Imaginer et concevoir : une solution algorithmique.
Cours Architecture des Systèmes Informatiques
Langages de programmation Ordinateurs = Machines à exécution.  D’où la nécessité d’outils de communication qui s’adaptent le mieux aux utilisateurs. Comment.
Module I3 algorithmique et programmation
Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE
Les Machines RAM.
Introduction au langage C Fonctions et Procédures
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Fonction Traiter Algorithmique et Programmation
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
ISBN Chapitre 10 L'implémentation des sous- programmes.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. tél Fax Cours Architecture des.
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
UE MAREP Cours 12 : Révisions
Patricia Renault UPMC 2005/2006
Introduction à la compilation
COMPIL - Z Compilateur visible
1.1: notions de bases de l’informatique
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Transcription de la présentation:

1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot Cinquième séance Langages de Programmation Cours Architecture des Systèmes Informatiques

2 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Plan  Introduction aux langages de programmation  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 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Les langages de programmation Une classification  Assembleurs : “bien” utiliser les ressources de la machine  Premiers langages compilés : FORTRAN (scientifique), COBOL (gestion) : écrire des applications “portables”  Langages de programmation structurée : ALGOL, PASCAL : programmes aisés à concevoir et maintenir  Langages à objets : C++ : programmation “dans le large”  Langages fonctionnels : LISP, Caml… vers des programmes plus faciles à prouver  Langages déclaratifs : Prolog…  Langages spécialisés : SQL (bases de données), sh, ksh, perl (shell scripts), etc…

4 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Technologies d'implantation  Langages compilés Un outil (compilateur) transforme le programme source en un programme objet, ou un programme “core image” Le résultat est directement exécutable par la machine 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

5 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Étapes de l’exécution d’un programme compilé  Compilation : traduction d’un langage source vers un langage d'assemblage ou 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”

6 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilateur  Lit un programme en un langage dit “de haut niveau” C, C++, Pascal, Fortran, Ada : langage source  Opère en plusieurs “phases” : analyse lexicale, analyse syntaxique, génération de code  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.

7 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Traduction  Comment réalise-t-on sur la machine la représentation des éléments du langage source ? Génération du code :  Utilisation et gestion des registres  Création du code machine Représentation des variables  Cours 5, TP 5  variables globales statiques, variables locales automatiques Sous-programmes  Représentation  Appel et retour.

8 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax 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

9 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax 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

10 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Un langage et son compilateur : mcc  mcc : “mini C compiler” Sous-ensemble du langage C  types de données : entiers 16 bits, caractères 8 bits  structures de données : scalaires, tableaux et pointeurs 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

11 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 1  Expressions arithmétiques int a,b,c; /* var. globales */ a = 2; b = 5; c = (a+3)*(b-1); ld r2,#2 mul r3 st.l ld r2,r1 ld r2,#5 st.l st.l ld.l add r2,#3 data 0 sub data 0 ld data 0

12 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 1 : notes  Intervention nécessaire des registres Le compilateur traite chaque instruction de manière séparée Le compilateur utilise R2, R3… selon les besoins  Renommage des variables : a dans le code assembleur produit ceci permet d'utiliser r2, r3 comme noms de variables  Code produit correct, mais médiocre génération indépendante de chaque instruction C pas d'optimisation spécifique mise en place

13 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 2  Expressions logiques int i,j; j = i<10; ld.l ld r3,#10 cmp r2,r3 ld ld st.l  Génération explicite d'une valeur logique : 0 ou 1  Création d'étiquettes par le compilateur

14 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 3  Boucles int i; i=0; while (i<10) i=i+1; ld r2,#0 ld ld.l ld.l ld r3,#10 add r2,#1 cmp r2,r3 st.l ld data 0

15 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 4  Programme complet main() { 2+3; ld r2,#2 add r2,#3 ld r14,#0 ld r15,#0  Notes positionnement des registres R14 et R15 instruction d'arrêt

16 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 5  Variables globales ; initialisation int a=5, b; main() { b=3; ld r2,#3 st.l ld r14,#0 ld r15,#0 start data data 0

17 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 6  Variables locales ; initialisation main() { int a=5,b; b=3; ld r2,#5 st.l r2,-2(r14) ld r2,#3 st.l r2,-4(r14) ld r14,#0 ld.l r15,#-4  Utilisation de R14 comme “registre de base”

18 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Structure du programme en mémoire R14 R15 Programme et données statiques Variables locales 0x0000 0xFFFE 0xFFFC Zone utilisée par la pile

19 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 7 Un exemple : PGCD de 2 nombres 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); }

20 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Le code ld.l r2,#7953 st.l ld.l r2,#12291 ld.l ld.l cmp r2,r3 ld ld ld.l ld.l cmp r2,r3 ld ld ld.l st.l ld.l st.l ld.l ld.l ld.l sub r2,r3 ld.l ld r0,r2 trap 13,3 trap 13,2 ld r14,#0 ld r15,#0 start data data data 0

21 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation des sous-programmes  Choix et contraintes Passages des paramètres, retour du résultat : où, et comment ?  Possibilités : registres, pile  Choix : paramètres dans les registres R2, R3, R4… résultat dans R0 Représentation des variables locales du sous-programme  Initialisation des variables ? Représentation des variables statiques  Initialisation ? Préservation des registres ?  Qui doit le faire : appelant ou appelé ?  Choix : appelé

22 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 8  Sous-programmes - Arguments int incr(int x) { return x+1; } main() { incr(3); ld.l ld r2,#3 add r2,#1 ld r0,r2 ld r2,r0 pop ld r14,#0 ld r15,r14 ld r15,#0 pop r14 push r14 ld r14,r15 push r2

23 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 8 : Notes - 1  Appel du sous-programme : paramètre dans R2  Prologue du sous-programme : Avant appel :  R2=3, R14=0, R15=0 Appel : empile adresse retour (0x24)  R15=0xFFFE Exécution du Prologue push r14 ld r14,r15 push r2 Après le prologue :  R14=0xFFFC, R15=0xFFFA R14 R15 0x0000 0xFFFE 0xFFFC xFFFA 0024

24 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 8 : Notes - 2  Épilogue du sous-programme : Avant retour :  R0=4, R2=3, R14= 0xFFFC, R15= 0xFFFA Exécution de l'épilogue pop r2 ld r15,r14 pop r14 Après l'épilogue  R0=4, R2=3, R14=0, R15=0xFFFE  Retour du sous-programme : résultat dans R0  R0=4, R2=3, R14=0, R15=0

25 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 8 : Notes - 3  Registre R14 : accès aux arguments  premier argument = -2(R14), deuxième = -4(R14), etc…  La pile contient : Adresse de retour  ici 0x0024 Sauvegarde registre R14 (registre de base de l'appelant…) Valeur des paramètres  ici, un seul, R2 [ Sauvegarde des registres modifiés par l'appelé ]  aucune sauvegarde nécessaire dans le cas présent [ Variables locales de l'appelé ]  aucune dans le cas présent

26 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 9  Sous-programmes - Variables locales int sub() { int x=3; return x+1; } main() { sub(); ld r2,#3 st.l r2,-2(r14) ld.l r2,-2(r14) add r2,#1 ld pop r2 add r15,#2 ld r15,r14 pop r14 push r14 ld r14,r15 sub r15,#2 push r2

27 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 9 : Notes  Le sous-programme n'a pas de paramètre, mais une variable locale ; il a besoin d'un registre de travail Prologue :  Sauvegarde R14 de l'appelant  Positionne R14 de l'appelé  Réserve 2 octets pour x  Sauvegarde R2 Épilogue :  Opérations inverses push r14 ld r14,r15 sub r15,#2 push r2 pop r2 add r15,#2 ld r15,r14 pop r14

28 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 10  Sous-programmes - Variables locales statiques int sub() { static int x=3; return x+1; } main() { sub(); ld.l add r2,#1 ld pop r2 ld r15,r14 pop r14 push r14 ld r14,r15 push data 3

29 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation 10 - Notes  Une variable locale statiques est similaire à une variable globale  Le compilateur génère un nom “unique” ici, ” remplace le nom “ x ” choisi par l'utilisateur

30 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 11  Tableau global int tab[10]; main() { tab[3]=5; ld r2,#5 ld r3,#3 sll r3,#1 st.l ld r14,#0 ld r15,#0 start bss 20 Notes : “sll r3,1” permet de passer de l'indice de l'élément à un déplacement en octets à l'intérieur du tableau utilisation de l'adressage indexé

31 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 12  Tableau local main() {int tab[10]; tab[3]=5; ld r2,#5 ld r3,#3 sll r3,#1 add r3,r14 st.l r2,-20(r3) ld r14,#0 ld.l r15,#-20 Notes : Le tableau est réservé dans la pile “sll r3,1” permet de passer de l'indice de l'élément à un déplacement en octets à l'intérieur du tableau utilisation de l'adressage indexé ; une instruction machine supplémentaire est nécessaire pour accéder à l'élément

32 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Compilation - 13  Tableau passé en paramètre int sub(int tab[10]) { return tab[3]; } int tab[10]; main() { tab[3]=5; sub(tab); ld r2,#3 sll r2,#1 add.l r2,-2(r14) ld r3,(r2) ld pop r3 pop r2 ld r15,r14 pop r14 push r14 ld r14,r15 push r2 push ld r2,#5 ld r3,#3 sll r3,#1 st.l la.l ld r2,r0 ld r14,#0 ld r15,#0 start bss 20