III. Traduction des langages de «haut niveau»

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "III. Traduction des langages de «haut niveau»"

Transcription

1 Introduction aux systèmes Informatiques: L interface Matériel Logiciel (A3-2015/2016) Léon Mugwaneza Polytech Marseille/Dépt. Informatique (bureau A118) III. Traduction des langages de «haut niveau» (2/2)

2 Traduction des langages de haut niveau : où en sommes-nous? Prg. en lang. de «haut niveau» Compilation (forme) (sens) (traduction) Analyse lexicale et syntaxique Analyse sémantique Génération de code Choix pour la représentation des données Traduction du programme affectation des unités de mémorisation aux données traduction des instructions instructions simples, conditionnelles, itérations procédures et fonctions Qu est ce qu une procédure? Qu est ce qu une fonction? Prg. en langage d assemblage On utilisera le terme procédure pour désigner les 2 2

3 Exemple : Fonctions C int main(void) { int i,j,k,m; } i = multiply(j,5); m = multiply(i,i);... appel (main est l appelant et multiply l appelé ) paramètres effectifs paramètres formels variables locales int multiply (int mcand, int mlier) /* really dumb multiply function */ {int product; product = 0; while (mlier > 0) résultat { product = product + mcand; mlier = mlier -1; } return product; } 3

4 Traduction des procédures une procédure comprend : des déclarations de paramètres formels (paramètres et résultat) des déclarations (définitions) de variables locales des instructions pour la traduction des instructions voir ci-dessus reste 4 points à considérer : la sauvegarde et restauration du contexte l appelant les variables locales le passage des paramètres ( les procédures imbriquées procédure définies à l intérieur d autres à voir un cours de compilation) Pour chacun de ces points :! Quelles informations le compilateur (le programmeur en en langage d assemblage) doit-il maintenir?! A l aide de quelles instructions? 4

5 L appel de procédure (rappels) Branchement vs. appel de procédure point d entrée de p BR BR Appel à p Appel à p retour à l appelant (sortie de p) branchement = modification du compteur ordinal appel de procédure = sauvegarde adresse de retour + branchement (l appel de procédure doit sauvegarder la valeur du compteur ordinal pour pouvoir retourner à l instruction qui suit l appel) du point de vue de la partie du programme où s effectue l appel de procédure, l appel est considéré comme une instruction qui prend «un certain temps» et qui a un «effet complexe» sur l état de la machine 5

6 Support ISA pour les procédures Tous les processeurs modernes ont une (des) instruction(s) d appel et une (des) instruction(s) de retour de procédure - jal (jump and link) et jr (jump register) pour MIPS - jal: adresse de retour sauvegardée dans $ra ($31) - instruction de retour : jr $ra - call et ret (return) pour INTEL - jsr (jump to subroutine) et rts (return from subroutine) pour Motorola - call et ret pour Sun Sparc les instructions d appel (call) et de retour de procédure (ret) sur INTEL et Sun Sparc ont le même nom mais ne font pas évidemment pas la même chose (les ISA ne sont pas les mêmes) 6

7 Procédures sur MIPS: appels imbriqués (1/2) int sumsquare(int x, int y) { return multiply(x,x)+ y; } une procédure a appelé sumsquare, maintenant sumsquare appelle multiply il y a une valeur dans $ra qui est l adresse de retour de sumsquare, mais cette valeur sera écrasée par l appel à multiply il faut sauvegarder l adresse de retour de sumsquare avant d appeler multiply 7

8 Procédures sur MIPS: appels imbriqués (2/2) Dans le cas général, on peut avoir besoin de sauvegarder «d autres registres» en plus de $ra Pour un programme en exécution, trois zones mémoire sont allouées pour les données : la zone des données statiques : données définies une fois dans le programme, et dont la durée de vie est le programme entier (ex : variables globales, constantes chaînes de caractères) le tas (heap) : «variables» dont la mémoire est allouée et libérée dynamiquement à l exécution la pile (stack) : espace mémoire utilisé par les procédures en exécution. C est sur la pile que l on peut sauvegarder les valeurs des registres. Une zone mémoire est allouée à chaque appel de procédure (on parle d environnement ou bloc d activation de la procédure) Sur certains processeurs, l instruction d appel de procédure sauvegarde directement l adresse de retour sur la pile Instruction CALL des processeurs INTEL Instruction JSR des processeurs MOTOROLA 8

9 Organisation de la mémoire d un prg $sp! (stack pointer! - pointeur de pile)!! Stack! Heap! (exemple) espace pour les infos sauvegardées! par les procédures (sauvegardes, paramètres, var. locales! mémoire allouée et libérée! dynamiquement (ex: malloc())! Static! variables dont la mémoire est! allouée une fois avant l exécution du! programme (ex: variables basses! Code! instructions du programme! 9

10 Procédures: pourquoi une pile? Environnements de procédures avec appels imbriqués A: CALL B B: CALL C C:. RET. RET α α β α β χ α β α Certains processeurs fixent la gestion de la pile en mémoire dans l ISA en offrant des instructions pour «empiler» et «dépiler» (ex : INTEL, MOTOROLA) Pour d autres processeurs, la pile est implantée à travers une convention du logiciel (ex: MIPS) 10

11 Piles en mémoire Utiles pour sauvegarder les environnements des procédures même si l ISA ne définit pas des instructions de manipulation de pile - Pile qui croît vers croissantes vs pile qui croît vers décroissantes Où pointe SP? prochain vide? SP dernier occupé? c b a décroissantes /dernier /prochain vide dépiler: lire M[SP] incrémenter SP dépiler : incrémenter SP lire M[SP] empiler: décrémenter SP écrire M[SP] empiler : écrire M[SP] décrémenter SP Cas pile qui croît vers croissantes? (exercice) Comment représente-t-on une pile vide? 11

12 Les variables locales durée de vie une variable locale a comme durée de vie la durée de l appel courant de la procédure dans laquelle elle est définie les variables locales statiques ont comme durée de vie la durée du programme et sont transmises d un appel à l autre les variables locales statiques sont traitées (traduites) comme des variables globales» pourquoi des variables statiques?» exemple d utilisation : générateur de nombres aléatoires (history sensitive subprograms )» pourquoi ne sont-elles pas globales? en FORTRAN I, II et IV toutes les variables étaient statiques FORTRAN 77, FORTRAN 90, C, C++, Java permettent de spécifier qu une variable locale est statique. En Pascal n y a pas de variables locales statiques Rque : en C le qualificatif static n a pas le même sens sur une variable globale que sur une variable locale sur variable locale : étend la durée de vie à la durée du programme sur variable globale : restreint la visibilité au module 12

13 Où allouer les variables locales? les variables locales peuvent être allouées soit dans des registres, soit en mémoire si on fait plusieurs appels imbriqués (notamment récursifs), il faudra faire des sauvegardes en mémoire des variables locales placées dans des registres) En cas de récursivité, comme chaque appel de procédure crée de nouvelles variables locales, la mémoire affectée aux variables locales ou pour la sauvegarde de celles allouées dans des registres est gérée sous forme de pile En fait : qu est ce qu une pile? type abstrait avec les opérations (empiler, dépiler, top, )? pour la pile utilisée dans la traduction des procédures, on a besoin d accéder à des éléments qui ne sont pas en sommet de pile le terme pile fait plutôt référence à la façon dont la mémoire est allouée et libérée 13

14 Les paramètres (et résultat) Allocation d unités de mémorisation : même traitement que pour les variables locales dans des registres ou dans un espace mémoire réservé sur la pile pour les paramètres : en fonction du mode de passage des paramètres on réserve l espace pour la valeur, pour l adresse ou pour les deux (voir plus loin) Comment traiter les procédures à nombre variable de paramètres? (ex : printf) 14

15 Sauvegardes le minimum à sauvegarder est l adresse de retour en général celle-ci est «automatiquement» sauvegardée par l instruction de l ISA qui réalise l appel de procédure la sauvegarde par l instruction d appel est :» soit dans un registre (ex. $ra pour les instructions jal, jalr du MIPS)» soit sur la pile (ex. instruction JSR des processeurs Motorola, instruction CALL des processeurs INTEL) la sauvegarde dans un registre (cas du MIPS) est plus rapide mais pose un problème lorsque un appel de procédure intervient dans la procédure appelée. Dans ce cas, l appelé sauvegarde l adresse de retour sur la pile avantages de la sauvegarde dans un registre : rapide pour les procédures «feuilles» qui ne réalisent pas d autres appels l architecture n impose rien pour la gestion de la pile (le compilateur a le choix) la sauvegarde automatique de l adresse de retour (une instruction ISA dédiée à l appel de procédures) n est pas obligatoire Quelles instructions sont nécessaires? 15

16 Support ISA pour les procédures? extern int sum(int x,int y); Une instruction qui réalise à la fois la sauvegarde de l adresse de de retour et le branchement au point d entrée de la procédure n est pas absolument nécessaire (cf ci-contre) Pourquoi a-t-on des instructions dédiées aux appels de procédures? Pour aller plus vite (make the common case fast)» les procédures sont très courantes dans les programmes ; sum(a,b); ; int sum(int x, int y){ return x+y; } C! # a et b dans $s0 et $s1, x et y dans $a0 et $a1 # resultat dans $v0 # sum(a,b) à xß a, y ß b 1000 add $a0,$s0,$ add $a1,$s1,$0 de retour), saut à sum 1008 addiu $ra,$0, j sum sum: add $v0,$a0,$a1 # retour à l appelant 2004 jr $ra M I P S! 16

17 Contexte d une procédure (1/2) Bloc d activation (environnement) d une procédure (procedure activation frame, stack frame) pointeur d environnement (Frame Pointer) FP SP Résultat, Paramètres Registres sauvegardés par l appelé, (ancien FP, RA) Variables locales On accède au résultat, aux paramètres et aux variables locales à l aide d un déplacement fixe par rapport à hautes Temporaires : croît et «rétrécit» pendant l évaluation des expressions Pointeur de pile (Stack Pointer) Le pointeur d environnement FP pointe à un emplacement fixe dans le bloc d activation de la procédure (et ne bouge pas pendant l exécution de l appel courant de la basses 17

18 Contexte d une procédure (1/2 - bis) Bloc d activation (environnement) d une procédure (procedure activation frame, stack hautes pointeur d environnement (Frame Pointer) FP Résultat, Paramètres Registres sauvegardés par l appelé, (ancien FP, RA) On accède au résultat, aux paramètres et aux variables locales à l aide d un déplacement fixe par rapport à FP Variables locales SP Pointeur de pile (Stack Pointer) Temporaires : croît et «rétrécit» pendant l évaluation des basses 18

19 Contexte d une procédure (1/2 - ter) Bloc d activation (environnement) d une procédure (procedure activation frame, stack hautes pointeur d environnement (Frame Pointer) FP SP Pointeur de pile (Stack Pointer) Résultat, Paramètres Variables locales Registres sauvegardés par l appelé, (ancien FP, RA) On accède au résultat, aux paramètres et aux variables locales à l aide d un déplacement fixe par rapport à FP Temporaires : croît et «rétrécit» pendant l évaluation des basses 19

20 Contexte d une procédure (2/2) La taille des zones Résultat/Paramètres, Registres sauvegardés, et Variables locales peut être déterminée à la compilation (ou par le programmeur en LA) Le pointeur d environnement FP peut pointer n importe où dans l une des 3 zones (par exemple sur l ancien FP) Le compilateur peut se passer du pointeur d environnement et n utiliser que le pointeur de pile à condition de connaître à tout moment la taille de la zone des temporaires Le bloc d activation est construit et détruit par l appelant et l appelé par la séquence d appel et la séquence de retour la séquence d appel alloue le contexte et le remplit la séquence de retour restaure l état du processeur et de la pile pour que l appelant puisse continuer son exécution au retour de la procédure L organisation du bloc d activation ainsi que les séquences d appel et de retour peuvent différer même pour l implantation d un même langage 20

21 Exemple de séquence d appel Appelant (caller) sauvegardes de registres qui peuvent être modifiés par l appelé évaluation et passage des paramètres effectifs + place du résultat appel de procédure Appelé (callee) sauvegardes (adresse de retour, frame pointer, ) réservation de la place pour les variables locales et initialisation exécution du corps de la procédure 21

22 Exemple de séquence de retour Appelé (callee) placer les éventuelles valeurs retournées dans le contexte de l appelant restauration des registres (RA, FP,, SP?) instruction de retour de procédure (réalise la restauration de PC) Appelant (caller) récupérer les résultats éventuels élimination de la place pour les paramètres restauration des registres sauvegardés avant l appel Rque : les tâches données ici sont à réaliser, mais ne sont pas forcément réparties de cette façon entre l appelant et l appelé, notamment si l ISA offre des instructions spécifiques 22

23 Conventions d utilisation des registres Pour sauvegarder le contexte de l appelant on a 3 possibilités : l appelé sauvegarde tous les registres qu il utilise même si certains ne contiennent pas quelque chose d important pour l appelant l appelant sauvegarde tous les registres qui contiennent une information utile même si certains ne sont pas utilisés par l appelé rallonge la taille du code «répartition du travail» entre l appelant et l appelé par une convention de programmation on distingue alors :» des registres sauvegardés par l appelant» des registres sauvegardés par l appelé une procédure qui n appelle pas d autres procédures (procédure feuille) aura tendance à utiliser les registres sauvegardés par l appelant 23

24 Les procédures en lang. d ass. «MIPS» Appel avec l instruction jal, retour à l appelant avec jr $ra (rque : d autres instructions d appel de procédure existent : jalr, beqzal, ) Le programmeur devrait respecter les conventions d utilisation des registres (même s il est seul à programmer) jusqu à 4 paramètres dans les registres $a0, $a1, $a2 et $a3 le résultat est placé dans $v0 (et si nécessaire dans $v1) des registres qui ne doivent pas être modifiés par une procédure appelée des registres qui peuvent être modifiés par une procédure appelée 24

25 Conventions des registres du MIPS (1/4) 0 zero constante 0 (HW) 1 at réservé à l assembleur 2 v0 évaluation d expressions 3 v1 & résultat des fonctions 4 a0 arguments (paramètres) 5 a1 6 a2 7 a3 8 t0 temporaires: sauvegardés... par l appelant... (l appelé peut les modifier sans les sauvergarder) 15 t7 16 s0 temporaires sauvegardés par l appelé... (l appelant peut les utiliser sans risque) 23 s7 24 t8 temporaires (cont d) 25 t9 26 k0 réservés au noyau du SE 27 k1 28 gp Pointer to global area 29 sp Stack pointer 30 fp Frame pointer 31 ra Return Address (HW) (Doc p. A-23) : Utilisez les noms des registres -- le code est plus lisible! 25

26 Conventions des registres du MIPS (2/4) Effet des procédures sur les registres? $0: pas de modification. Toujours = 0 $s0-$s7: pas de modification. C est pour cette raison qu ils sont appelés «saved registers». Si l appelé doit les modifier, avant le retour il doit restaurer la valeur originale $sp: pas de modification. Le pointeur de pile doit pointer au même endroit avant et après l appel d une procédure, sinon l appelant ne peut pas restaurer les registres qu il a sauvegardés sur la pile 26

27 Conventions des registres du MIPS (3/4) Effet des procédures sur les registres? $ra: modifié. L instruction jal modifie ce registre. L appelant doit sauvegarder ce registre sur la pile $v0-$v1: modifiés. Sont destinés à contenir les valeurs retournées par la procédure $a0-$a3: modifiés. Registres arguments «volatiles». L appelant doit les sauvegarder s il en a besoin après l appel $t0-$t9: modifiés. D où l appellation temporaires, toute procédure peut les modifier. L appelant doit les sauvegarder s il en a besoin après un appel Rque : modifiés signifie : «peuvent être modifiés» 27

28 Conventions des registres du MIPS (4/4) Que signifient ces conventions? Si l appelé utilise des registres «sauvegardés» $s i, il doit : 1) sauvegarder ces registres $s i sur la pile 2) utiliser les registres 3) restaurer les registres $s i avant le retour à l appelant Pour les registres temporaires $t i, l appelé n a pas besoin de les sauvegarder L appelant doit sauvegarder les registres temporaires $t i dont il veut préserver la valeur A noter : l appelant/l appelé doit sauvegarder seulement les registres temporaires/sauvegardés qu il utilise (pas tous les registres) 28

29 EX: contexte d une procédure sur MIPS Prologue Epilogue Corps proc: addiu $sp, $sp, -framezize sw $ra, (framesize-4)($sp) sw $fp, (framesize-8)($sp) # sauvegarde autres regs addiu $fp, $sp, framesize... sw $s0, zz($fp) #résultat lw $ra, -4($fp) # restauration autres regs addu $sp, $fp, $0 lw $fp, -8($fp) jr $ra Prologue Epilogue Corps FP SP ra FP SP ra FP SP résultat paramètres ra, old FP résultat paramètres ra, old FP basses résultat paramètres sauvegardes var locales Les 4 premiers paramètres sont passés dans les registres (si possible) 29

30 Modes de passage des paramètres (1/2) passage par valeur le paramètre effectif n est pas modifié à l issue de l appel on passe une copie de la valeur même pour un tableau» les tableaux passés par valeur sont copiés élément par élément sur la pile (ex. Pascal) les tableaux C ne sont pas passés par valeur utilisé en C, C++, Pascal, ADA, MODULA,... passage par résultat pas de valeur transmise à l appel le paramètre est traité comme une variable locale, dont la valeur est copiée à la fin de la procédure» Il faut donc réserver la place pour «la variable locale» et avoir une référence pour copier le résultat» qui copie le résultat? l appelant ou l appelé? utilisé en ADA 30

31 Modes de passage des paramètres (2/2) passage par référence on ne transmet qu une référence en paramètre effectif évite la copie pour «les gros paramètres», mais chaque accès se fait par une indirection utilisé par PASCAL (passage par variable), MODULA, Java, C pour les tableaux, C++,... Effets «bizarres» si plusieurs façons de désigner une variable globale : à problème d alias (collision de noms) var a : integer ; proc p(référence x : integer) begin x:=x+2; a := a+x ; end; begin a := 1; p(a); writeln(a); end. quelle est la valeur affichée? Comment écrire le programme en C++? Quelle serait la valeur affichée si le mode était «résultat»? 31

32 Fin du chapitre III Autres mode de passage des paramètres? voir un cours sur les concepts des langages de programmation* et/ ou un cours de compilation** Et les procédures imbriquées (définitions imbriquées)? voir un cours de compilation** * ex: Programming language pragmatics de M.L. Scott (MKP publishers, 2000) ** ex: Compilers : principles, techniques, and tools de A.V Aho, M.S. Lam, R. Sethi et J.D. Ullman 2 e ed. (Addison Wesley, 2008), une traduction en Français existe chez Dunod (Compilateurs : principes, techniques et outils) 32

Compilation. Introduction & architecture MIPS. Sandrine Blazy (d après le cours de François Pottier) 20 octobre 2008

Compilation. Introduction & architecture MIPS. Sandrine Blazy (d après le cours de François Pottier) 20 octobre 2008 Compilation Introduction & architecture MIPS Sandrine Blazy (d après le cours de François Pottier) - 2 e année 20 octobre 2008 S.Blazy (www.ensiie.fr/ blazy) Compilation 20 octobre 2008 1 / 49 1 Introduction

Plus en détail

Compilation (INF 564)

Compilation (INF 564) Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation

Plus en détail

Objectifs. Architecture des Ordinateurs Partie III : Liens avec le système d exploitation. Au sommaire... Schéma général d un compilateur (1/8)

Objectifs. Architecture des Ordinateurs Partie III : Liens avec le système d exploitation. Au sommaire... Schéma général d un compilateur (1/8) Architecture des Ordinateurs Partie III : Liens avec le système d exploitation 2. Génération de code David Simplot simplot@fil.univ-lille1.fr Objectifs Voir la génération de code ainsi que les mécanismes

Plus en détail

Rappels d architecture

Rappels d architecture Assembleur Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée

Plus en détail

Conception et exploitation des processeurs

Conception et exploitation des processeurs Chargé de cours : Frédéric Pétrot Équipe pédagogique : Alban Bourge, Stéphane Mancini, Claire Maiza, Luc Michel, Olivier Muller (resp.), Sebastien Viardot Année universitaire 2013-2014 Structure du cours

Plus en détail

Conception et exploitation des processeurs

Conception et exploitation des processeurs Chargé de cours : Frédéric Pétrot Équipe pédagogique : Stéphane Mancini, Luc Michel, Olivier Muller, Christophe Rippert, Sebastien Viardot Année universitaire 2012-2013 Structure du cours C1 C2 C3 C4 aux

Plus en détail

5.2. Introduction à la programmation en assembleur et en langage machine

5.2. Introduction à la programmation en assembleur et en langage machine 5. Couche conventionnelle. Introduction à la programmation en assembleur et en langage machine. Instructions - types, formats, champs; types d'adressage et utilisation des registres. Branchements, sauts

Plus en détail

Sommaire. Introduction à la compilation. Notion de compilation. Notion de compilation. Notion de compilation. Notion de compilation

Sommaire. Introduction à la compilation. Notion de compilation. Notion de compilation. Notion de compilation. Notion de compilation Introduction à la compilation A. DARGHAM Faculté des Sciences Oujda Sommaire Environnement d un compilateur Schéma global d un compilateur Caractéristiques d un bon compilateur Définition Un compilateur

Plus en détail

Abstraction: introduction. Abstraction et liaison dans les langages de programmation. Abstraction: principe. Abstraction: terminologie. N.

Abstraction: introduction. Abstraction et liaison dans les langages de programmation. Abstraction: principe. Abstraction: terminologie. N. Abstraction et liaison dans les langages de programmation LIN2: Paradigmes de programmation N. Hameurlain Abstraction: introduction L'importance de l abstraction découle de sa capacité de cacher les détails

Plus en détail

Analyse Sémantique. Arthur Garnier

Analyse Sémantique. Arthur Garnier Analyse Sémantique Arthur Garnier 1 Résumé source -> Analyse Syntaxique (AST) -> Analyse sémantique (AST + TDS) -> Optimisations -> Prod. de code -> Assembleur Une table des symboles par région (fonction,

Plus en détail

Notions de langage machine

Notions de langage machine Notions de langage machine 18 décembre 2009 Rappels et introduction Architecture de Van Neumann : Processeur = UC + UAL Mémoire interne au processeur = les registres (soit seulement l accumulateur, soit

Plus en détail

Cours Assembleur 8086

Cours Assembleur 8086 Cours Assembleur 8086 Pierre-Nicolas Clauss Laboratoire Lorrain de Recherche en Informatique et ses Applications 12 mars 2008 pierre-nicolas.clauss@loria.fr (LORIA) Cours Assembleur 8086 12 mars 2008 1

Plus en détail

Introduction. Les performances d une machine sont liées au: 1. nombre d instructions. 2. temps de cycle horloge

Introduction. Les performances d une machine sont liées au: 1. nombre d instructions. 2. temps de cycle horloge Introduction Les performances d une machine sont liées au: 1. nombre d instructions 2. temps de cycle horloge 3. nombre de cycle horloge par instructions. C est: le compilateur et l architecture du jeu

Plus en détail

Introduction à l'informatique

Introduction à l'informatique Introduction à l'informatique DEUG Sciences et Technologie Première année Autour de la programmation Catherine Mongenet Pierre Gancarski (supports réalisés par Catherine Mongenet et Pascal Schreck) Rappels

Plus en détail

Gestion de la mémoire

Gestion de la mémoire Chapitre 9 Gestion de la mémoire Durant l exécution d un programme, les éléments manipulés par le programme sont stockés dans différents types de mémoire. La pile d exécution contient des éléments dont

Plus en détail

3 Lien entre pointeurs et tableaux.

3 Lien entre pointeurs et tableaux. programme sont dit dynamiques. On se limite ici aux tableaux statiques à une seule dimension, analogue aux vecteurs manipulés en mathématiques. Ils se déclarent sous la forme : type_d_élément variable_tableau[taille];

Plus en détail

La gestion des procédures

La gestion des procédures La gestion des procédures Laboratoire de Systèmes Logiques Appel de procédure En langage de haut niveau: procedure toto; begin end; toto; toto; En langage machine: toto: rts jsr toto jsr toto Page 2 L

Plus en détail

Organisation des données et structures de stockage

Organisation des données et structures de stockage ING2 - ING3 Nvx 2009-2010 Organisation des données et structures de stockage I. Stockage de l information en C Ce chapitre rappelle brièvement et complète certaines notions de base vues en première année

Plus en détail

L3 Info & Miage. TP-Projet SGF

L3 Info & Miage. TP-Projet SGF TP-Projet SGF 1. Introduction L objectif de ce mini-projet est de réaliser un Système de Gestion de Fichiers simplifié capable de gérer des accès à des fichiers séquentiels de type flot. L idée est ici

Plus en détail

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS 1. PRÉSENTATION. Le langage C a fait son apparition en 1972 pour le développement du système d exploitation Unix. Il est devenu un standard de la norme ANSI en 1983.

Plus en détail

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2010-2011 S. Kramm (IUT Rouen) MCII1 - Cours 3 2010-2011 1 / 47 Sommaire 1 Rappels de C et définitions

Plus en détail

DS Architecture des Ordinateurs

DS Architecture des Ordinateurs 3IF - Architecture des ordinateurs - DS 2015 page 1/9 NOM, Prénom : DS Architecture des Ordinateurs 21/05/2015 Durée 1h30. Répondez sur le sujet. REMPLISSEZ VOTRE NOM TOUT DE SUITE. Tous documents autorisés,

Plus en détail

Introduction à l assembleur ARM: variables et accès mémoire. GIF-1001 Ordinateurs: Structure et Applications, Hiver 2015 Jean-François Lalonde

Introduction à l assembleur ARM: variables et accès mémoire. GIF-1001 Ordinateurs: Structure et Applications, Hiver 2015 Jean-François Lalonde Introduction à l assembleur ARM: variables et accès mémoire GIF-1001 Ordinateurs: Structure et Applications, Hiver 2015 Jean-François Lalonde Rappel: cycle d instructions Que fait le microprocesseur? 1.

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

Pour cela, il a suffi d utiliser les appels système, quelques régistres et des sauts conditionnels très simples.

Pour cela, il a suffi d utiliser les appels système, quelques régistres et des sauts conditionnels très simples. Fonctions, pile, récursion et blocs d activation Les appels de fonctions et la récursion... On a vu comment écrire en assembleur une boucle qui calcule la factorielle d un entier lu sur la console, et

Plus en détail

Langages de haut niveau

Langages de haut niveau Langages de haut niveau Introduction Un assembleur est un programme traduisant en code machine un programme écrit à l'aide des mnémoniques Les langages d'assemblage représentent une deuxième génération

Plus en détail

Groupe Eyrolles, 2005, ISBN : 2-212-11635-7

Groupe Eyrolles, 2005, ISBN : 2-212-11635-7 Groupe Eyrolles, 2005, ISBN : 2-212-11635-7 Processeurs et jeux d instructions CHAPITRE 4 159 Introduction au langage assembleur Dans le cadre de notre démarche ascendante, nous allons maintenant aborder

Plus en détail

Examen UE INF241 : Introduction aux Architectures Logicielles et Matérielles

Examen UE INF241 : Introduction aux Architectures Logicielles et Matérielles UNIVERSITE Joseph FOURIER, Grenoble Licence de Sciences et technologie - Parcours MIN, INF, BIN et MIN international Examen UE INF241 : Introduction aux Architectures Logicielles et Matérielles Première

Plus en détail

renforcer le contrôle de type :

renforcer le contrôle de type : renforcer le contrôle de type : définitions, prototypes de fonctions surcharge références conversions de void * préférer le compilateur au préprocesseur considérer les entrées/sorties opérations abstraites

Plus en détail

Construction et destruction des objets de vie des objets Objets composites Tableaux d'objets Copie (Initialisation et affectation) des objets

Construction et destruction des objets de vie des objets Objets composites Tableaux d'objets Copie (Initialisation et affectation) des objets Construction et destruction des objets Durée de vie des objets Objets composites Tableaux d'objets Copie (Initialisation et affectation) des objets Initialisation des objets Constructeur par recopieinit

Plus en détail

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons du cours d aujourd hui Programmation «orientée système» LANGAGE C POINTEURS (5/5) des pointeurs Complément (et mise en garde) sur Exemple pratique : listes Forçage de type (casting) Laboratoire d Intelligence

Plus en détail

Introduction à Fortran 90

Introduction à Fortran 90 Introduction à Fortran 90 Nicolas Kielbasiewicz 19 mars 2008 Fortran pour FORmula TRANslator est comme son nom l indique dédié au calcul scientifique car très performant de ce point de vue. Fortran 77

Plus en détail

Java : Programmation Impérative

Java : Programmation Impérative 1 Java : Programmation Impérative Résumé du cours précédent (I11) Paradigme impératif Algorithmique simple Découpage fonctionnel Qu est-ce qu un programme informatique? / un langage de programmation? /

Plus en détail

Niveaux de description

Niveaux de description Chapitre 1 Niveaux de description Olivier Raynaud Université Blaise Pascal Base conceptuelle d un ordinateur Extrait de [Tis] La mémoire La mémoire est divisée en parties physiques appelées mots (par exemple

Plus en détail

Unité 9: Unité centrale de traitement. Unité 9: Unité centrale de traitement

Unité 9: Unité centrale de traitement. Unité 9: Unité centrale de traitement Objectifs : À la fin de cette unité, vous connaîtrez le fonctionnement de l'unité centrale de traitement d'un ordinateur. Pour y arriver, vous devrez atteindre les objectifs suivants : - décrire les différentes

Plus en détail

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation.

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Sébastien COLLETTE et Gilles GEERAERTS 1 Introduction Ce document décrit

Plus en détail

Techniques de compilation

Techniques de compilation Département d Informatique Université de Nice Sophia Antipolis Master 1 Informatique Techniques de compilation XI. Générateurs de générateurs de code Jacques Farré email : Jacques.Farre@unice.fr 1 Introduction

Plus en détail

Logiciel de base. Première année ENSIMAG

Logiciel de base. Première année ENSIMAG Logiciel de base Première année ENSIMAG 1 Procédures, paramètres, pile En assembleur une fonction est une étiquette, c'est l'adresse de sa première instruction Lors de l'appel d'une fonction, la pile sert

Plus en détail

Noyau d'un système d'exploitation INF2610 Chapitre 7 : Gestion de la mémoire (annexe 2)

Noyau d'un système d'exploitation INF2610 Chapitre 7 : Gestion de la mémoire (annexe 2) INF2610 Chapitre 7 : Gestion de la mémoire (annexe 2) Département de génie informatique et génie logiciel Hiver 2014 Exemple 1 : Espace virtuel d un processus Où seront stockées les données des variables

Plus en détail

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

Plus en détail

Premiers exemples de traitements

Premiers exemples de traitements #include #include Premiers exemples de traitements void main() float b(0.0); float c(0.0); float delta(0.0); cin >> b >> c; delta = b*b - 4*c; if (delta < 0.0) cout

Plus en détail

La mémoire. Polytech Paris-Sud Cycle ingénieur de la filière étudiant. Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri.

La mémoire. Polytech Paris-Sud Cycle ingénieur de la filière étudiant. Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri. La mémoire Polytech Paris-Sud Cycle ingénieur de la filière étudiant Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri.fr année 2012/2013 Aspects matériels de la mémoire Types de mémoires Type Accès

Plus en détail

Gestion mémoire et Représentation intermédiaire

Gestion mémoire et Représentation intermédiaire Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,

Plus en détail

Architecture des Ordinateurs et Systèmes d Exploitation

Architecture des Ordinateurs et Systèmes d Exploitation Architecture des Ordinateurs et Systèmes d Exploitation Cours n 5 Le langage assembleur (2): Pile, Procédures. Les Interruptions 3ème année L assembleur 8086 : la pile = structure de «rangement» de données

Plus en détail

Instructions assembleur

Instructions assembleur Instructions assembleur 0001011011110110 0001011101101101 10001001 Instruction vue par le programmeur assembleur ou instruction élémentaire cible d'un compilateur Réalise une modification de l'état interne

Plus en détail

Jeu d instructions et modes d adressage MIPS

Jeu d instructions et modes d adressage MIPS Jeu d instructions et modes d adressage MIPS Vincent Risch, mai 2008, révision mai 2014 I.U.T., Aix-Marseille Université Jeu d instructions et modes d adressage MIPS p. 1 MIPS : Introduction Architecture

Plus en détail

La programmation Impérative par le Langage C

La programmation Impérative par le Langage C La programmation Impérative par le Langage C 1. Introduction 1.1 Qu est-ce que la programmation impérative? Un programme est constitué de plusieurs lignes d instructions. Chaque instruction permet d effectuer

Plus en détail

Jeu d instruction et Pipeline NSY 104

Jeu d instruction et Pipeline NSY 104 Jeu d instruction et Pipeline NSY 104 Les jeux d instructions Définitions Partie de l architecture avec laquelle le programmeur ou le concepteur de compilateur est en contact. Ensemble des instructions

Plus en détail

Allocation dynamique en c++

Allocation dynamique en c++ Allocation dynamique en c++ *tableau; tableau * tableau = tableau = new [ no_max ]; tableau = new * [ no_max ] tableau[i] = new int[ 5 ]; tableau tableau[i] = new int[5]; * tableau[0] int int int int int

Plus en détail

Les procédures. Chapitre 7

Les procédures. Chapitre 7 Les procédures Chapitre 7 1 Intérêt Créer une instruction nouvelle qui deviendra une primitive pour le programmeur Structurer le texte source du programme et améliorer sa lisibilité Factoriser l'écriture

Plus en détail

Introduction au langage C - types et variables

Introduction au langage C - types et variables Chapitre 2 Introduction au langage C - types et variables 1 Le Langage C Le langage C est un langage de bas niveau dans le sens où il permet l accès à des données que manipulent les ordinateurs (bits,

Plus en détail

Les Fichiers en Pascal

Les Fichiers en Pascal Les Fichiers en Pascal Université de Toulouse II DEUG MASS Année 2004-2005 Patricia PASCAL < ppascal@laas.fr > - Page 1 / 31 - Plan du cours sur les fichiers les fichiers, pourquoi, comment? (p3) les différents

Plus en détail

Situation physique de la mémoire. La mémoire centrale. La taille d un processeur. Les registres et la mémoire cache

Situation physique de la mémoire. La mémoire centrale. La taille d un processeur. Les registres et la mémoire cache La mémoire centrale 1 / 41 Rangement dans la mémoire La mémoire centrale 4 / 41 Situation physique de la mémoire Chapitre 5 A La mémoire centrale Chapitre 5 J-C Dubacq IUT de Villetaneuse Université Paris

Plus en détail

Arnaud DABOUIS Vincent HURBOURQUE IMAC 1. PROJET C : Traitement d images

Arnaud DABOUIS Vincent HURBOURQUE IMAC 1. PROJET C : Traitement d images PROJET C : Traitement d images 1 SOMMAIRE 1) Schéma et structure a) Schéma de la structure b) Les structures utilisées La structure image La structure calque La structure LUT La structure Historique et

Plus en détail

TP 1 : Utilisation d un simulateur de système d exploitation

TP 1 : Utilisation d un simulateur de système d exploitation TP 1 : Utilisation d un simulateur de système d exploitation NFP136 : Valeur d Accueil et de Reconversion en Informatique 2 2014/2015 Supports : Tous les supports pour ce tp sont disponibles sur à l adresse

Plus en détail

Techniques de compilation

Techniques de compilation Département d Informatique Université de Nice Sophia Antipolis Master 1 Informatique Techniques de compilation XSPIM : un simulateur graphique du MIPS R2000 Jacques Farré email : Jacques.Farre@unice.fr

Plus en détail

Logiciel de Base. II. Le Langage Machine

Logiciel de Base. II. Le Langage Machine Logiciel de Base (A1-6/7) Léon Mugwaneza ESIL/Dépt. Informatique (bureau A118) mugwaneza@univmed.fr II. Le Langage Machine Exemple : le MIPS R2 (Architecture MIPS-I) MIPS R2 MIPS : Microprocessor with

Plus en détail

Analyse statique de programmes Typage et analyse statique au sein de Java

Analyse statique de programmes Typage et analyse statique au sein de Java Analyse statique de programmes Typage et analyse statique au sein de Java Master Professionnel Informatique spécialité FSIL/FSI Jean-Marc Talbot jean-marc.talbot@lif.univ-mrs.fr Aix-Marseille Université

Plus en détail

ASSEMBLAGE ET ÉDITION DES LIENS

ASSEMBLAGE ET ÉDITION DES LIENS ASSEMBLAGE ET ÉDITION DES LIENS Mewtow 11 novembre 2015 Table des matières 1 Introduction 5 2 La chaine d assemblage 7 2.1 Résolution des symboles.............................. 7 2.2 Relocation.....................................

Plus en détail

Dépassement de tampon

Dépassement de tampon Dépassement de tampon En informatique, un dépassement de tampon ou débordement de tampon (en anglais, buffer overflow) est un bug par lequel un processus, lors de l'écriture dans un tampon, écrit à l'extérieur

Plus en détail

SE202 : déroulement du cours et bases de compilation. Samuel Tardieu Année scolaire 2015/2016

SE202 : déroulement du cours et bases de compilation. Samuel Tardieu Année scolaire 2015/2016 SE202 : déroulement du cours et bases de compilation Samuel Tardieu Année scolaire 2015/2016 1/44 Samuel Tardieu Année scolaire 2015/2016 Organisation du cours 2/44 Samuel Tardieu Année scolaire 2015/2016

Plus en détail

6. Lecture/écriture formatées et Fichiers. printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture

6. Lecture/écriture formatées et Fichiers. printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture 1 6. Lecture/écriture formatées et Fichiers printf / scanf Fichier: Mémoire tampon Accès aux fichiers Modes d'ouverture Lecture / écriture 2 Références Site du zèro : Programmer en C http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html

Plus en détail

Langage C notes de cours

Langage C notes de cours Langage C notes de cours K. El Omari IUT GTE, UPPA 1 Présentation générale 1.1 Introduction La programmation par le langage C (ainsi que par d autres langages dit compilés) est basée sur : 1. la rédaction

Plus en détail

Représentation de. IFT 2030, v 1.0 Université de Montréal Représentation de données 1

Représentation de. IFT 2030, v 1.0 Université de Montréal Représentation de données 1 Représentation de données Université de Montréal Représentation de données 1 Donnée et représentation Distinguer entre objet et représentation : - Objet = donnée du point de vue de l application - Représentation

Plus en détail

Cours Langage C/C++ Mémoire et allocation dynamique

Cours Langage C/C++ Mémoire et allocation dynamique Cours Langage C/C++ Mémoire et allocation dynamique Thierry Vaira BTS IRIS Avignon tvaira@free.fr v0.1 La pile et le tas La mémoire La mémoire dans un ordinateur est une succession d octets (soit 8 bits),

Plus en détail

Algorithmique - Programmation 1. Cours 1

Algorithmique - Programmation 1. Cours 1 Algorithmique - Programmation 1 Cours 1 Université Henri Poincaré CESS Epinal Automne 2008 1/ 24 Plan Introduction Introduction A propos d AP1 Quelques concepts de base Premiers pas avec Caml Le branchement

Plus en détail

INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008

INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008 INF 201 - TP 2 - Programmation C T. Grandpierre 12/2008 Ce qu il faut rendre : A la fin du TP il faudra archiver et compresser l ensemble de votre travail (y compris le rapport avec vos noms) avec la commande

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

Examen 2. Q1 (3 points) : Quel mot ou concept relié aux ordinateurs correspond à la définition suivante :

Examen 2. Q1 (3 points) : Quel mot ou concept relié aux ordinateurs correspond à la définition suivante : GI-1001, 24 avril 2012 Nom/Matricule : Examen 2 Cet examen vaut 40% de la note totale du cours. Les questions seront corrigées sur un total de 40 points. La valeur de chaque question est indiquée avec

Plus en détail

Chap. X : Ordonnancement

Chap. X : Ordonnancement UMR 7030 - Université Paris 13 - Institut Galilée Cours Architecture et Système Le compilateur sépare les différents objets apparaissant dans un programme dans des zones mémoires (code, données, librairies,

Plus en détail

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

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali 3. Langage Python 3 2 a. Introduction Présentation du langage Python : Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l imposer) une approche modulaire et orientée objet

Plus en détail

Cours de Compilation

Cours de Compilation Université Mohammed V - Agdal Faculté des sciences Département d'informatique Cours de Compilation SMI - S5 Prof. M.D. RAHMANI mrahmani@fsr.ac.ma 1 Plan du cours I. Généralités sur les compilateurs. II.

Plus en détail

TL N 1 Systèmes Informatiques RÉALISATION D'UN MICROPROCESSEUR

TL N 1 Systèmes Informatiques RÉALISATION D'UN MICROPROCESSEUR 1 2 ème Année RENNES 2003-2004 TL N 1 Systèmes Informatiques RÉALISATION D'UN MICROPROCESSEUR 1. OBJECTIF Il s agit de concevoir un processeur simple, de le simuler et de l implanter dans un composant

Plus en détail

CHAPITRE 3 : Types de base, Opérateurs et Expressions

CHAPITRE 3 : Types de base, Opérateurs et Expressions CHAPITRE 3 : Types de base, Opérateurs et Expressions 1. Types simples Un type définit l'ensemble des valeurs que peut prendre une variable, le nombre d'octets à réserver en mémoire et les opérateurs que

Plus en détail

Soutien Informatique

Soutien Informatique 1/51 Soutien Informatique Nicolas Castagné et François Portet PHELMA 2/51 Sommaire Allocation Mémoire Les types abstraits de données 3/51 Allocation dynamique de mémoire (stdlib.h,string.h) Réserver un

Plus en détail

Notions Générales. Séance 1. Année universitaire 2015/2016 Semestre 1

Notions Générales. Séance 1. Année universitaire 2015/2016 Semestre 1 Notions Générales Séance 1 Année universitaire 2015/2016 Semestre 1 1 Ordinateur et programmation L orientation universitaire, l inscription, la réservation d un billet d avion, sont des opérations de

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Code Intermédiaire. Linéarisation Canonisation.

Code Intermédiaire. Linéarisation Canonisation. 2 2 2 s 2 2 s Code Intermédiaire Génération de Code Linéarisation Canonisation. Didier Rémy Octobre 2000 http://cristal.inria.fr/ remy/poly/compil/3/ http://w3.edu.polytechnique.fr/profs/informatique/didier.remy/compil/3/

Plus en détail

Apprendre à programmer

Apprendre à programmer La résolution des problèmes est traitée suivant le cycle de développement analyse conception codage. L analyse du problème conduit à la conception d un algorithme répondant aux exigences exprimées. Chaque

Plus en détail

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Systèmes de types Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 8 février 2007 1 / 20 Système de types Un type

Plus en détail

Claude Kaiser Machine virtuelle et environnement utilisateur SRI_B CHAPITRE 1

Claude Kaiser Machine virtuelle et environnement utilisateur SRI_B CHAPITRE 1 CHAPITRE 1 FOURNIR À L'UTILISATEUR UNE MACHINE VIRTUELLE ET UN ENVIRONNEMENT D'EXÉCUTION DE PROGRAMMES Plan ENVIRONNEMENT DE TRAVAIL ADAPTÉ AU BESOIN DE L'UTILISATEUR Fonctions de l'environnement d'exécution

Plus en détail

Chapitre 1 Introduction

Chapitre 1 Introduction Chapitre 1 Introduction Jean Privat Université du Québec à Montréal INF7330 Construction de logiciels Diplôme d études supérieures spécialisées en systèmes embarqués Automne 2012 Jean Privat (UQAM) 01

Plus en détail

3 Pseudo-code et algorithmes 26

3 Pseudo-code et algorithmes 26 TABLE DES MATIÈRES 1 Introduction à la programmation 1 1.1 Programme et langage de programmation 2 1.2 Étapes du développement des programmes 2 1.3 Notion d'algorithme 6 2 Notions de base 9 2.1 Constantes

Plus en détail

Projet 1 ENS Lyon L3IF

Projet 1 ENS Lyon L3IF Projet 1 ENS Lyon L3IF Génération de code Sébastien Briais 8 janvier 2008 Dans cette partie, vous allez devoir implémenter le générateur de code pour l émulateur DLX risc-emu. À rendre pour le 18 janvier

Plus en détail

Conduite du Projet Système

Conduite du Projet Système Conduite du Projet Système Département Télécom 2ème Année Enseignants : Yves Denneulin, Jacques Mossière, Grégory Mounié, Simon Nieuviarts, Franck Rousseau, Sébastien Viardot Résumé Ce document est complémentaire

Plus en détail

Introduction au langage python

Introduction au langage python Introduction au langage python Gauthier Picard SMA/G2I/ENS Mines Saint-Etienne gauthierpicard@emsefr Introduction au langage python Gauthier Picard 1 / 36 Sommaire 1 Les bases de Python 2 Fonctions et

Plus en détail

Compilation. Cours n 3: Architecture du compilateur Sélection d instructions: de PP à UPP. Sandrine Blazy (d après le cours de François Pottier)

Compilation. Cours n 3: Architecture du compilateur Sélection d instructions: de PP à UPP. Sandrine Blazy (d après le cours de François Pottier) Compilation Cours n 3: Architecture du compilateur Sélection d instructions: de PP à UPP Sandrine Blazy (d après le cours de François Pottier) - 2 e année 10 novembre 2008 S.Blazy (ENSIIE) Compilation

Plus en détail

Langages de programmation et compilation

Langages de programmation et compilation École Normale Supérieure Langages de programmation et compilation Jean-Christophe Filliâtre Cours 6 / 9 novembre 2015 Jean-Christophe Filliâtre Langages de programmation et compilation 2015 2016 / cours

Plus en détail

1 Pointeurs, références, alias et tableaux

1 Pointeurs, références, alias et tableaux 1 Pointeurs, références, alias et tableaux 1 1.1 Définitions Un pointeur est une variable contenant l'adresse d'un objet en mémoire. Un pointeur est déni par le couple (type, adresse) de l'objet pointé.

Plus en détail

Types et performances des processeurs

Types et performances des processeurs Types et performances des processeurs Laboratoire de Systèmes Logiques Structure d un ordinateur contrôle processeur traitement séquenceur registres mémoire entrées/sorties micromémoire opérateurs bus

Plus en détail

COMPILATEUR C CC5X POUR PIC UTILISÉ AVEC MPLAB

COMPILATEUR C CC5X POUR PIC UTILISÉ AVEC MPLAB COMPILATEUR C CC5X POUR PIC UTILISÉ AVEC MPLAB Adresse Internet du site de l éditeur : http://www.bknd.com/cc5x/index.shtml 1) GÉNÉRALITÉS Ce document se réfère à la version 3.2. Il est basé sur un autre

Plus en détail

USTL - Licence ST-A 1ère année 2005-2006 Initiation à la programmation. CTD : Variables et types de données

USTL - Licence ST-A 1ère année 2005-2006 Initiation à la programmation. CTD : Variables et types de données USTL - Licence ST-A 1ère année 2005-2006 Initiation à la programmation 1 Motivation 1.1 Un problème CTD : Variables et types de données État initial : Tas 1 un nombre quelconque de cartes, les autres tas

Plus en détail

Architecture des ordinateurs TP 3

Architecture des ordinateurs TP 3 Architecture des ordinateurs ESIPE - IR1 TP 3 Objectif de cette séance L objectif de cette séance est d apprendre à utiliser la pile et à écrire des fonctions en assembleur En particulier, nous verrons

Plus en détail

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut

Plus en détail

Complément du cours Langage C

Complément du cours Langage C Complément du cours Langage C Licence Fondamentale SMI (semestre 3) Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2013/2014 2013/2014 Pr. Ben Mamoun 1 Chapitre 9 Types structures, unions

Plus en détail

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes

ISMIN 1A Programmation 1 : Examen de programmation C. Réponses. Partie 1. Questions ouvertes ISMIN 1A Programmation 1 : Examen de programmation C Réponses Partie 1. Questions ouvertes 1. Soit la déclaration suivante, char tab[] = "". Que contient le tableau tab? Réponse : tab[0] = \0. tab est

Plus en détail

1. Eléments de base du langage C

1. Eléments de base du langage C 1 1. Eléments de base du langage C Généralités Programme et sous-programme Fonction C Structure d un programme C Vocabulaire de base et syntaxe Exemples 2 Généralités Crée en 1972 par D. Ritchie pour écrire

Plus en détail

Chapitre I. Introduction à la programmation

Chapitre I. Introduction à la programmation Chapitre I Introduction à la programmation Objectif du cours Comprendre ce qu est l algorithmique. Fournir des éléments de bases intervenants en programmation quel que soit le langage employé Variables

Plus en détail