Analyse de sécurité de logiciels système par typage statique

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

Download "Analyse de sécurité de logiciels système par typage statique"

Transcription

1 Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction d Emmanuel Chailloux et Sarah Zennou 10 juillet 2014 Analyse de sécurité de logiciels système par typage statique Étienne Millon 1/44

2 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 2/44

3 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 3/44

4 L arnaque du serrurier S + = J appelle un serrurier Je l attends devant chez moi Il ouvre ma porte Je rentre chez moi Analyse de sécurité de logiciels système par typage statique Étienne Millon 4/44

5 L arnaque du serrurier S + = J appelle un serrurier Je l attends devant chez mon voisin Il ouvre sa porte Je rentre chez mon voisin Analyse de sécurité de logiciels système par typage statique Étienne Millon 4/44

6 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 5/44

7 Utilisateur et noyau Programmes utilisateur : navigateur,... Appels système Noyau : pilotes Instructions privilégiées Matériel : disque dur,... Analyse de sécurité de logiciels système par typage statique Étienne Millon 6/44

8 Mémoire utilisateur et noyau 0 3 Go 4 Go Programmes utilisateur Appels système Noyau Instructions privilégiées Matériel Analyse de sécurité de logiciels système par typage statique Étienne Millon 7/44

9 Utilisation correcte d un appel système struct timeval tv; struct timeval* ptv = &tv; int z = gettimeofday(ptv, NULL); 0 3 Go 4 Go ptv Analyse de sécurité de logiciels système par typage statique Étienne Millon 8/44

10 Utilisation détournée d un appel système struct timeval* ptv = 0xc2c12705; int z = gettimeofday(ptv, NULL); 0 3 Go 4 Go ptv Analyse de sécurité de logiciels système par typage statique Étienne Millon 9/44

11 Problème des pointeurs dans les appels système La copie simple n est pas suffisante : il faut vérifier tous les pointeurs 2 propriétés : Qui contrôle le pointeur? Dans quelle plage se trouve sa valeur? Invariant : les pointeurs contrôlés par l utilisateur pointent dans la mémoire utilisateur Fonctions non sûres : memcpy, strcpy Fonctions sûres : copy_from_user, copy_to_user copy_from_user memcpy memcpy copy_to_user memcpy Analyse de sécurité de logiciels système par typage statique Étienne Millon 10/44

12 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 11/44

13 Le projet Penjili Analyse de sécurité de logiciels système par typage statique Étienne Millon 12/44

14 Le projet Penjili Safespeak ptrtype Analyse par typage Analyse de sécurité de logiciels système par typage statique Étienne Millon 12/44

15 Le langage intermédiaire Newspeak Un langage adapté à l analyse statique : simple : il contient peu de constructions explicite : les effets de bords sont explicites expressif : tout programme C peut être converti en Newspeak Analyse de sécurité de logiciels système par typage statique Étienne Millon 13/44

16 Exemple int x; x = 0; while (x < 10) { } x++; int32 x; x =(int32) 0; do { while (1) { choose { --> guard((10 > x_int32)); --> guard(! (10 > x_int32)); goto lbl1; } x =(int32) coerce[-2**31,2**31-1] (x_int32 + 1); } } with lbl1: { } Analyse de sécurité de logiciels système par typage statique Étienne Millon 14/44

17 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 15/44

18 Safespeak Newspeak : bon front-end mais bas niveau Safespeak = restriction de C «bien typable» Pas de casts, arithmétique des pointeurs restreinte Différence de modèle mémoire : Newspeak : suite d octets Safespeak : ensemble structuré de valeurs Analyse de sécurité de logiciels système par typage statique Étienne Millon 16/44

19 Syntaxe Expressions Expressions e ::= c Constante e Opération unaire e e Opération binaire lv Accès mémoire lv e Affectation &lv Pointeur fun(x 1,..., x n ){i} Fonction e(e 1,..., e n ) Appel de fonction {l 1 : e 1 ;... ; l n : e n } Structure [e 1 ;... ; e n ] Tableau Analyse de sécurité de logiciels système par typage statique Étienne Millon 17/44

20 Syntaxe Instructions Instructions i ::= Pass Instruction vide i; i Séquence e Expression Decl x = e in{i} Déclaration de variable If(e){i}Else{i} Alternative While(e){i} Boucle Return(e) Retour de fonction Analyse de sécurité de logiciels système par typage statique Étienne Millon 18/44

21 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 19/44

22 Sémantique d évaluation Système de transitions entre états expression + mémoire e, m e, m expressions valeurs exemple : x, m 1, m si x vaut 1 dans m. Analyse de sécurité de logiciels système par typage statique Étienne Millon 20/44

23 Structure de la mémoire Locales n 0 n 1 Globales a 2 b 3.14 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 } Cadre de pile z 2 Analyse de sécurité de logiciels système par typage statique Étienne Millon 21/44

24 Valeurs gauches ex : x.f[2] 3 valeurs gauches (lvalues) chemins ϕ Chemins ϕ ::= (x) Globale (n, x) Locale ϕ.l Accès à un champ ϕ[n] Accès à un élément ϕ v, m v, m[ϕ v] Comment définir m[ϕ] et m[ϕ v]? Analyse de sécurité de logiciels système par typage statique Étienne Millon 22/44

25 Lentilles Relation entre objet et sous-objet L Lens R,A { get L = L : R A put L : (A R) R get L ( ) = put L (, ) = Analyse de sécurité de logiciels système par typage statique Étienne Millon 23/44

26 Composition de lentilles get L1 get L1 put L2 get L2 put L1 L 1 L 2 Analyse de sécurité de logiciels système par typage statique Étienne Millon 24/44

27 Lentilles pour les structures de données I(n) : lentille «n e élément d une liste» put I(2) (5, [4; 8; 15; 16]) = [4; 5; 15; 16] L(k) : lentille «élément associé à k» d une liste d association get L(b) ([(a, 23); (b, 42)]) = 42 T (n) et F (k) : équivalents de I(n) et F (k) sur les valeurs tableaux et structures Analyse de sécurité de logiciels système par typage statique Étienne Millon 25/44

28 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 } a 2 b 3.14 ϕ = L = z 2 Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

29 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 } a 2 b 3.14 ϕ = ( L = fst z 2 Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

30 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 } a 2 b 3.14 ϕ = (2, L = fst I(2) z 2 Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

31 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 z 2 } a 2 b 3.14 ϕ = (2, x) L = fst I(2) L(x) Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

32 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 z 2 } a 2 b 3.14 ϕ = (2, x).f L = fst I(2) L(x) F (f) Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

33 Fonctionnement des lentilles n 0 n 1 n 2 { f : [1; 6; 1; 8] x g : 3 y 4 z 2 } a 2 b 3.14 ϕ = (2, x).f[2] L = fst I(2) L(x) F (f) T (2) Analyse de sécurité de logiciels système par typage statique Étienne Millon 26/44

34 Définition de Φ Φ Path Lens Mem,V al Φ((x)) = snd L(x) Φ((n, x)) = fst I(n) L(x) Φ(ϕ.l) = Φ(ϕ) F (l) Φ(ϕ[n]) = Φ(ϕ) T (n) m[ϕ] def == get Φ(ϕ) (m) m[ϕ v] def == put Φ(ϕ) (v, m) Analyse de sécurité de logiciels système par typage statique Étienne Millon 27/44

35 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 28/44

36 Système de types Type t ::= Int Entier Float Flottant Unit Unité t Pointeur noyau Pointeur utilisateur t [ ] Tableau {l 1 : t 1 ;... ; l n : t n } Structure (t 1,..., t n ) t Fonction Analyse de sécurité de logiciels système par typage statique Étienne Millon 29/44

37 Deux types de pointeurs Pointeurs noyau : t valeur fixée à la compilation ou par le runtime ex : &x, malloc(n) peuvent être déréférencés (*p, memcpy()) Pointeurs utilisateur : valeur provient d un utilisateur non privilégié ex : paramètres d appels systèmes peuvent être copiés uniquement par des fonctions sûres (copy_*_user) Analyse de sécurité de logiciels système par typage statique Étienne Millon 30/44

38 Règles de typage Γ lv : t Γ &lv : t (Addr) Γ e : t Γ e : t (Lv-Deref) Γ e d : t Γ e s : Γ copy_from_user( e d, e s ) : Int (User-Get) Γ e d : Γ e s : t Γ copy_to_user( e d, e s ) : Int (User-Put) Analyse de sécurité de logiciels système par typage statique Étienne Millon 31/44

39 Exemple : gettimeofday Comment copier l heure calculée par le noyau à l adresse ptv? Version naïve : memcpy( ptv, time ) ; Γ memcpy( e d, e s ) : Int Version correcte : copy_to_user( ptv, time ) ; Γ copy_to_user( e d, e s ) : Int Analyse de sécurité de logiciels système par typage statique Étienne Millon 32/44

40 Sûreté du typage Théorème (Progrès) Supposons que Γ e : t. Soit m un état mémoire tel que Γ m. Alors l un des cas suivants est vrai : v Ω, e = v (e, m ), e, m e, m Ω {Ω div, Ω array, Ω ptr }, e, m Ω Analyse de sécurité de logiciels système par typage statique Étienne Millon 33/44

41 Sûreté du typage Théorème (Préservation) Soient Γ un environnement de typage et m un état mémoire tels que Γ m. Soit e une expression telle que Γ e : t. Alors, si e, m e, m, on a Γ e : t et Γ Cleanup(m ). Analyse de sécurité de logiciels système par typage statique Étienne Millon 34/44

42 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 35/44

43 L analyseur ptrtype Liste de sources Safespeak ptrtype Analyse par typage Analyse de sécurité de logiciels système par typage statique Étienne Millon 36/44

44 Traduction Code C int f (int* x) { return (*x + 1); } Safespeak let f = fun (x) -> return (*x + 1) Analyse de sécurité de logiciels système par typage statique Étienne Millon 37/44

45 Traduction Code C int f (int* x) { return (*x + 1); } Safespeak + types inférés let f : Int* -> Int = fun (x : Int*) -> return ((((*x) : Int) + (1 : Int)) : Int) Analyse de sécurité de logiciels système par typage statique Étienne Millon 37/44

46 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 38/44

47 Example: freedesktop.org bug #29340 Code avec bug int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) { /*!npk userptr_fieldp data value*/ struct drm_radeon_info *info = data; uint32_t *value_ptr = (uint32_t *) ((unsigned long)info->value); uint32_t value = *value_ptr; /*... */ } Inference output error: 05-drm.c:17#10 05-drm.c:17# Type Type clash clash between between : : KPtr KPtr (_a15) (_a15) UPtr UPtr (_a8) (_a8) But if we replace last line by the following: Analyse de sécurité de logiciels système par typage statique Étienne Millon 39/44

48 Code corrigé 05-drm.c:17#10 - Type clash between : KPtr (_a15) UPtr (_a8) But if we replace last line by the following: if (copy_from_user(&value, value_ptr, sizeof(value))) return -14; Inference output fully annotated program: (06-drm-ok.c:17#6)^{ Int Inttmp_cir!0; (06-drm-ok.c:17#6)^tmp_cir!0 <- <- copy_from_user (( &(value) :: KPtr (d), value_ptr_uptr (d) :: UPtr (d), 44 :: Int); }} Bibliography Analyse de sécurité de logiciels système par typage statique Étienne Millon 40/44

49 1 Contexte L arnaque du serrurier Isolation entre utilisateur et noyau Penjili & Newspeak 2 Modélisation Safespeak Sémantique d évaluation Système de types 3 Expérimentation Analyseur statique Utilisation sur le noyau Linux 4 Conclusion Analyse de sécurité de logiciels système par typage statique Étienne Millon 41/44

50 Contributions Safespeak : un langage impératif bien typé Règles de codage pour avoir une sémantique de haut niveau Une sémantique basée sur les lentilles Permet une notation simple pour manipuler la mémoire Un système de types abstraits Alternative : sous-typage (CQual) Un prototype d analyseur statique Intégré dans l outillage industriel du projet Penjili Analyse de sécurité de logiciels système par typage statique Étienne Millon 42/44

51 Conclusion Problème réel : bug de ptrace sur Blackfin Janvier 2014 : «Linux 3.4+ : arbitrary write with CONFIG_X86_X32 (CVE )» Application du typage à la sûreté mémoire : délicat nécessite des restrictions mais fonctionne! Analyse de sécurité de logiciels système par typage statique Étienne Millon 43/44

52 Perspectives Automatiser l annotation : repérer les appels système Allocation dynamique Faire collaborer Penjili et ptrtype Autres propriétés : size_t et int : memset(p, 0, n) memset(p, n, 0) Types abstraits : permettre au programmeur de définir ses propres analyses Analyse de sécurité de logiciels système par typage statique Étienne Millon 44/44

nulles dans un langage à objets

nulles dans un langage à objets Prévention de déréférencement de références nulles dans un langage à objets Jean-Sébastien Gélinas, Étienne M. Gagnon, Jean Privat Université du Québec à Montréal Langages et Modèles à Objets Nancy 27

Plus en détail

Typage et Analyse Statique

Typage et Analyse Statique Typage et Analyse Statique Cours 1 Emmanuel Chailloux Spécialité Science et Technologie du Logiciel Master mention Informatique Université Pierre et Marie Curie année 2015-2016 Cours 1 - Typage et Analyse

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

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

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Analyse Statique de Programmes

Analyse Statique de Programmes Analyse statique et application. Typage. Analyse de flots de données. Exemples de transformations simples de programmes au niveau source. Prépa Agreg de Maths, option Info - ENS Cachan-Bretagne Thomas

Plus en détail

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Analyse de programme

Analyse de programme Analyse de programme À quoi ça sert? Comment ça marche? Bertrand Jeannet et Alain Girault INRIA Rhône-Alpes 25 janvier 2012 A. Girault et B. Jeannet (INRIA) Analyse de programme 25 janvier 2012 1 / 41

Plus en détail

Types de données et objets

Types de données et objets Types de données et objets VL A D Y RA V E L O M A N A N A Licence 1 S2 Université Denis Diderot (P7). vlad@liafa.jussieu.fr LIAFA Bureau 6A13. 175, rue Chevaleret Ravelomanana Vlady Types de données et

Plus en détail

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de:

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: C, seconde séance le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: false, c est 0 ( \0 aussi) test d égalité: == pour printf: %d entier, %f flottant, %c caractère,

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

Compilation. Vb. Analyse sémantique statique Analyse de nom et analyse de type

Compilation. Vb. Analyse sémantique statique Analyse de nom et analyse de type Université de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013 1/32 Compilation Vb. Analyse sémantique statique Analyse de nom et analyse de type Jacques Farré Jacques.Farre@unice.fr Université

Plus en détail

Éléments de Programmation Cours 1 - Introduction

Éléments de Programmation Cours 1 - Introduction Éléments de Programmation Cours 1 - Introduction Romain Demangeon 1I001 - Section 11 PEIP 08/09/2015 Étudiants PEIP: Informatique au 1er et 3eme semestre. Section MIPI 11: 160 étudiants, 5 groupes de TD.

Plus en détail

Cours de compilation

Cours de compilation Cours de compilation 1 Introduction Un compilateur est un logiciel de traduction d un langage source vers un langage cible. D ordinaire le langage source est un langage de programmation évolué, comme C++

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 2012-2013 (2eme session) durée 2h Tous documents et calculatrices autorisés. Le sujet comporte 6 pages Le temps approximatif ainsi que le barème

Plus en détail

1 Notions de base 1.1 Structure d'un programme

1 Notions de base 1.1 Structure d'un programme 1 Notions de base 1.1 Structure d'un programme Le langage C++ contient le langage C : tout programme écrit en C à la norme ANSI doit pouvoir être compilé par un compilateur C++. C++ fait la diérence entre

Plus en détail

λ-calcul et typage Qu est-ce qu une fonction?

λ-calcul et typage Qu est-ce qu une fonction? λ-calcul et typage Nicolas Barnier, Pascal Brisset ENAC Avril 2009 Nicolas Barnier, Pascal Brisset (ENAC) λ-calcul et typage Avril 2009 1 / 1 Qu est-ce qu une fonction? Classiquement Pas de notation uniforme/standard

Plus en détail

Algorithmique - Programmation 1. Cours 10

Algorithmique - Programmation 1. Cours 10 Algorithmique - Programmation 1 Cours 10 Université Henri Poincaré CESS Epinal Automne 2008 1/ 25 Plan Caml fonctionnel vs impératif Caml fonctionnel vs impératif Le type unit Données mutables Les structures

Plus en détail

UE C avancé cours 1: introduction et révisions

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

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

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Compte rendu TP No1 : «Analyse statique de programme»

Compte rendu TP No1 : «Analyse statique de programme» LO20 : Vérification, validation et sûreté de fonctionnement http://www.genie logiciel.utc.fr/lo20/ Compte rendu TP No1 : «Analyse statique de programme» Le premier TP concerne l'analyse statique de programme.

Plus en détail

Chapitre 3 : Pointeurs et références

Chapitre 3 : Pointeurs et références p. 1/18 Chapitre 3 : Pointeurs et références Notion de pointeur L adresse d une variable est une valeur. On peut donc la stocker dans une variable. Un pointeur est une variable qui contient l adresse d

Plus en détail

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire.

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire. Principes des lang. de progr. INE 11 Michel Mauny ENSTA ParisTech Prénom.Nom@ensta.fr Michel Mauny (ENSTA ParisTech) INE 11 Prénom.Nom@ensta.fr 1 / 37 Gestion et récupération automatique de mémoire lanage

Plus en détail

Sécurité des logiciels et analyse statique

Sécurité des logiciels et analyse statique Sécurité des logiciels et analyse statique David Pichardie Projet Lande, INRIA Rennes - Bretagne Atlantique Introduction générale à l analyse statique Analyse de programme Objet : déduire mécaniquement

Plus en détail

Compilation. Vb. Analyse sémantique statique Analyse de nom et analyse de type

Compilation. Vb. Analyse sémantique statique Analyse de nom et analyse de type Université de Nice - Sophia Antipolis Licence 3 Informatique 2010-2011 1/35 Compilation Vb. Analyse sémantique statique Analyse de nom et analyse de type Jacques Farré Jacques.Farre@unice.fr Université

Plus en détail

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Jeu Simon: analyse. La partie est perdue, on a eu une erreur ou un dépassement du temps limite : musique

Jeu Simon: analyse. La partie est perdue, on a eu une erreur ou un dépassement du temps limite : musique Jeu Simon: analyse 1 Algorithme du jeu : Effectuer un tirage de la séquence des couleurs (20 éléments, 3 couleurs) Répéter Afficher la séquence des couleurs et émission des notes associées Répéter Entrée

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

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

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

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

Langage C. Chapitre 2. 2.1 Le langage C, un langage non interprété. 2.1.1 L écriture du programme. 2.1.2 La compilation

Langage C. Chapitre 2. 2.1 Le langage C, un langage non interprété. 2.1.1 L écriture du programme. 2.1.2 La compilation Chapitre 2 Langage C 2.1 Le langage C, un langage non interprété Le C est un langage de programmation comme il en existe beaucoup d autres (C++, Fortran, Python, Matlab, IDL, ADA...). Il existe deux grandes

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

Optimisation de code

Optimisation de code Optimisation de code Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Optimisation de code 1 / 77 But L optimisation cherche à améliorer

Plus en détail

Notes de cours. Introduction

Notes de cours. Introduction Notes de cours GEI 44 : STRUCTURES DE DONNÉES ET ALGORITHMES Chapitre 5 Application des piles Introduction Piles très utilisées dans les compilateurs Voici deux exemples de composants d un compilateur

Plus en détail

Licence Fondamentale SMI (semestre 3)

Licence Fondamentale SMI (semestre 3) Cours Programmation I (chapitres 1&2) Licence Fondamentale SMI (semestre 3) Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2014/2015 2014/2015 Pr. Ben Mamoun 1 Plan du cours (1) 1. Introduction

Plus en détail

Systèmes Informatiques TD 3: langage C opérations élémentaires

Systèmes Informatiques TD 3: langage C opérations élémentaires Systèmes Informatiques TD 3: langage C opérations élémentaires P. Bakowski bako@ieee.org Opérateurs logiques/arithmétiques Le langage C offre une liste importante d opérateurs logiques et arithmétiques.

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

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

PLAN DU COURS ENTRÉE SORTIE FONCTION PRINTF. Fonction de la bibliothèque stdio.h. Affichage d'un texte:

PLAN DU COURS ENTRÉE SORTIE FONCTION PRINTF. Fonction de la bibliothèque stdio.h. Affichage d'un texte: PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, Tableaux, opérateurs Entrées sorties de base Structures de contrôle Algorithmes de recherche Algorithmes de

Plus en détail

Implantation d une machine virtuelle en C

Implantation d une machine virtuelle en C Implantation d une machine virtuelle en C Cours de Compilation Avancée (MI190) Benjamin Canou Université Pierre et Maire Curie Année 2012/2013 Semaine 3 Interprète de bytecode Interprète de bytecode :

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

2001-2002. UFR Mathématiques de la Décision. Première Année de DEUG Sciences et Technologie mention MASS. Informatique. Volume I.

2001-2002. UFR Mathématiques de la Décision. Première Année de DEUG Sciences et Technologie mention MASS. Informatique. Volume I. 2001-2002 UFR Mathématiques de la Décision Première Année de DEUG Sciences et Technologie mention MASS Informatique Volume I Fabrice Rossi c Fabrice Rossi, 1997-2002 Conditions de distribution et de copie

Plus en détail

Notion d indirection (1) 1

Notion d indirection (1) 1 Notion d indirection (1) 1 Illustration 1: Pourquoi garder une copie des fichiers postscript du cours dans mon répertoire, si je sais où se trouve l original sur le web? pour accéder à l original au cas

Plus en détail

C Facile. Le langage C. louen@via.ecp.fr. Mardi 15 décembre 2009. Centrale Réseaux. C Facile. Valentin Roussellet (p2010) - louen@via.ecp.

C Facile. Le langage C. louen@via.ecp.fr. Mardi 15 décembre 2009. Centrale Réseaux. C Facile. Valentin Roussellet (p2010) - louen@via.ecp. Le langage C Centrale Réseaux Mardi 15 décembre 2009 Sommaire C quoi? Le C est un langage de programmation créé en 1974, pour écrire le système d exploitation UNIX. Depuis,il est devenu (avec ses variantes),

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

Les méthodes formelles dans le cycle de vie. Virginie Wiels ONERA/DTIM Virginie.Wiels@onera.fr

Les méthodes formelles dans le cycle de vie. Virginie Wiels ONERA/DTIM Virginie.Wiels@onera.fr Les méthodes formelles dans le cycle de vie Virginie Wiels ONERA/DTIM Virginie.Wiels@onera.fr Plan Introduction Différentes utilisations possibles Différentes techniques pour différentes propriétés à différents

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

Structures de données

Structures de données 1 de 52 Algorithmique Structures de données Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 52 Algorithmes et structures de données La plupart des bons algorithmes

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

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 4 / 19 octobre 2015 Jean-Christophe Filliâtre Langages de programmation et compilation 2014 2015 / cours

Plus en détail

Introduction aux nouveautés du C++ 11

Introduction aux nouveautés du C++ 11 Introduction aux nouveautés du C++ 11 Miss Réunion Laurent NOËL laurent.noel.c2ba@gmail.com http://igm.univ-mlv.fr/ lnoel 07/05/2013 Laurent NOËL 07/05/2013 C++ 11 1 / 39 nullptr Quel est le problème de

Plus en détail

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html. R.R. Université Lyon 2

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html. R.R. Université Lyon 2 Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html 1 Généralités sur la programmation ALGORITHMIE - PROGRAMMATION 2 Algorithmie vs. Programmation Algorithmie Programme

Plus en détail

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales

Plus en détail

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C DUT Informatique 2015 / 2016 Travaux Pratiques n o 0 : Rappels de programmation C Nom(s) : Groupe : Date : Objectifs : renouer avec les notions, la manipulation et l écriture de programmes C, en particulier

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Comme déjà précisé dans les premiers chapitres de ce cours, il n existe pas de type chaîne de caractères prédéfinit en C. Il existe deux façons pour déclarer une chaîne de caractères

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

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

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

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

SUPPORT DE COURS. Langage C

SUPPORT DE COURS. Langage C Dpt Informatique 2010-2011 SUPPORT DE COURS Langage C Semestre 1 par : «CaDePe» Marie-Françoise Canut Marianne de Michiel André Péninou Table des Matières 1 Généralités...8 1.1 Introduction aux langages

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

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

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Objectif du cours. Bases de la programmation. Plan de cette partie

Objectif du cours. Bases de la programmation. Plan de cette partie Objectif du cours Bases de la programmation Université de Nice - Sophia Antipolis Richard Grin Version 1.2.5 24/9/11 http://deptinfo.unice.fr/~grin Introduction à la programmation orientée objet pour pouvoir

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

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

Formation C++ avancée

Formation C++ avancée Formation C++ avancée ou comment être les stars du C++ Raffi Enficiaud INRIA 16-18 février 2009 INRIA - IMEDIA Formation C++ avancée Organisation générale Enficiaud (INRIA) C++ 16-18/02/2009 2 / 201 À

Plus en détail

Chapitre 1 : La gestion dynamique de la mémoire

Chapitre 1 : La gestion dynamique de la mémoire Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement

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

Types de données en Java, comparaison avec Caml

Types de données en Java, comparaison avec Caml Types de données en Java, comparaison avec Caml par Denis Monasse, Lycée Louis le Grand 9 mai 2001 1 Les types élémentaires En Java, on dispose bien entendu des types élémentaires habituels : entiers,

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

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

TD 5 LES POINTEURS. Définition: Pointeur

TD 5 LES POINTEURS. Définition: Pointeur TD 5 LES POINTEURS d'après le site de F. Faber http://www.ltam.lu/tutoriel_ansi_c Définition: Pointeur Un pointeur est une variable spéciale qui peut contenir l'adresse d'une autre variable. En C, chaque

Plus en détail

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

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Sujet d examen 1. Pratique du C. Novembre 2009

Sujet d examen 1. Pratique du C. Novembre 2009 Durée 1 h 30 Documents autorisés Sujet d examen 1 Pratique du C Novembre 2009 Introduction Écrivez lisiblement et n hésitez pas à commenter votre code en langage C. Vous ne pouvez utiliser que les fonctions

Plus en détail

Série d exercices. o Cas 2 : gcc o nomexecutable c nomsource.c. o Cas 3 : gcc o nomexecutable W -Wall nomsource.c

Série d exercices. o Cas 2 : gcc o nomexecutable c nomsource.c. o Cas 3 : gcc o nomexecutable W -Wall nomsource.c Langage Impératif 1 TP 1 du 11 octobre 2010 Série d exercices Rappels rapides : - Un programme C s écrit toujours dans un fichier d extension.c (en minuscule!! sinon ce serait compilé comme du C++). Ce

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Vérification formelle d un modèle mémoire pour le langage C

Vérification formelle d un modèle mémoire pour le langage C Vérification formelle d un modèle mémoire pour le langage C Projet ANR ARA SSIA CompCert (http://compcert.inria.fr) Sandrine Blazy, Xavier Leroy CEDRIC-ENSIIE et INRIA Rocquencourt CEA-LIST, 18 mars 2008

Plus en détail

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014 Langage C/C++ TD 3-4 : Création dynamique d objets Hubert Godfroy 7 novembre 014 1 Tableaux Question 1 : Écrire une fonction prenant un paramètre n et créant un tableau de taille n (contenant des entiers).

Plus en détail

Chapitre 3 Structures de données linéaires : listes, piles et files

Chapitre 3 Structures de données linéaires : listes, piles et files Chapitre 3 Structures de données linéaires : listes, piles et files 1. Introduction Le but de ce chapitre est de décrire des représentations des structures de données de base telles les listes en général

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

Expressions rationnelles, automates, analyse lexicale

Expressions rationnelles, automates, analyse lexicale Chapitre 2 Expressions rationnelles, automates, analyse lexicale L analyse lexicale est la première phase d un compilateur ou d un interprète : elle consiste à identifier et à catégoriser les différents

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

É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

EPREUVE OPTIONNELLE d INFORMATIQUE

EPREUVE OPTIONNELLE d INFORMATIQUE EPREUVE OPTIONNELLE d INFORMATIQUE A) QCM Les réponses au QCM doivent être portées directement sur la feuille de sujet de QCM. Ne pas omettre de faire figurer votre numéro de candidat sur cette feuille

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

Programmation I : Cours d introduction à la programmation Pointeurs

Programmation I : Cours d introduction à la programmation Pointeurs Programmation I : Cours d introduction à la programmation Pointeurs Laboratoire d Intelligence Artificielle Faculté I&C Programmation I Pointeurs 1 / 23 Rappel du calendrier Programmation I Pointeurs 2

Plus en détail

Tableaux et pointeurs (corrigé)

Tableaux et pointeurs (corrigé) Tableaux et pointeurs (corrigé) Tous les exercices sont à faire. 1 Tableaux Exercice 1. Moyenne (*) Écrivez une fonction qui calcule la moyenne de n nombres stockés dans un tableau de double. Prototype

Plus en détail

Algorithmique, Structures de données et langage C

Algorithmique, Structures de données et langage C UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure

Plus en détail

Bonnes pratiques de développement et débogage de programme Octobre en2007 langage C1 et / 40 Fort

Bonnes pratiques de développement et débogage de programme Octobre en2007 langage C1 et / 40 Fort Bonnes pratiques de développement et débogage de programme en langage C et Fortran Sylvain Ferrand CMAP Octobre 2007 Bonnes pratiques de développement et débogage de programme Octobre en2007 langage C1

Plus en détail

Programmation fonctionnelle avec OCaml

Programmation fonctionnelle avec OCaml Programmation fonctionnelle avec OCaml 1ère séance, 19 février 2015 6 séances de 1h30 de cours et 3h de TP 3 projets avec soutenance D autres transparents sont disponibles avec vidéo (intranet) Samuel

Plus en détail

Langage C. Patrick Corde. 30 juin 2015. Patrick.Corde@idris.fr. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 30 juin 2015 1 / 288

Langage C. Patrick Corde. 30 juin 2015. Patrick.Corde@idris.fr. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 30 juin 2015 1 / 288 Langage C Patrick Corde Patrick.Corde@idris.fr 30 juin 2015 Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 30 juin 2015 1 / 288 Table des matières I 1 Présentation du langage C Historique Intérêts

Plus en détail

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année UFR Sciences et Techniques Licence S&T 1ère année Informatique UE 102 Architecture des ordinateurs et Algorithmique de base Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ UFR Sciences et Techniques

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Rapport de TER: Analyse de pointeur dans LLVM

Rapport de TER: Analyse de pointeur dans LLVM Rapport de TER: Analyse de pointeur dans LLVM Aurélien CHEMIER Janvier-Février 2014 Résumé Les optimisations réalisées à l intérieur d un compilateur, pour améliorer l efficacité du code généré, ont besoin

Plus en détail