L assembleur avec GCC

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "L assembleur avec GCC"

Transcription

1 L assembleur avec GCC informaticienzero 27/09/2014 Connaissez-vous les fonctions inline? On les utilise pour optimiser un code, puisque l appel de la fonction est remplacé par le corps de la fonction elle-même. Pour ceux qui connaissent le C, c est dans le même principe que les macros. En général, on écrit des fonctions inlines dans le même langage que le reste du code. En général car il est possible d écrire des fonctions en assembleur depuis un code C. A quoi ça peut servir? Allier la puissance de l assembleur avec le côté pratique du C. La syntaxe AT&T Avant de commencer, il est important de faire un point sur la syntaxe AT&T. En effet, celle-ci est moins courante que la syntaxe Intel et diffère pas mal. Voici une liste des différences majeures entre les deux syntaxes. Sachez néanmoins que même si vous n êtes pas familier ou à l aise avec cette syntaxe, cela ne sera pas gênant pour comprendre la suite. Ordre source / destination : le premier argument d une instruction sera toujours l opérande source et le deuxième l opérande destination. Ceux qui connaissent la syntaxe Intel savent que l ordre est inversé : destination puis source. Le nom des registres : les registres sont précédés par %. console cmp eax, ecx ; syntaxe Intel cmp %eax, %ecx ; syntaxe AT&T Opérande immédiate c est à dire une constante ou le résultat d une expression constante) : une opérande immédiate est toujours précédée par $, ainsi que les variables statiques C. De plus, les valeurs hexadécimales qui commençaient par un h avec la syntaxe Intel commencent désormais par 0x. console mov eax, 1 ; syntaxe Intel movl $1, %eax ; syntaxe AT&T mov ebx, 0ffh ; syntaxe Intel movl $0xff, %ebx ; syntaxe AT&T 1

2 Taille des opérandes : la taille d une opérande est connue en regardant la dernière lettre d un opérande : les suffixes sont b byte - 8 bits), w word - 16 bits) et l double word - 32 bits). Avec la syntaxe Intel, on aurait ajouté byte ptr, word ptr et dword ptr devant les opérandes. console mov al, byte ptr foo ; syntaxe Intel movb foo, %al ; syntaxe AT&T Opérande mémoire : la syntaxe Intel utilise les crochets [ et ], la syntaxe AT&T utilise les parenthèses et ). Par conséquence, l accès indirect à la mémoire passe de section:[base + index * scale + disp] à section:dispbase, index, scale). Les constantes utilisées pour disp et scale ne doivent pas être préfixées de $. console sub eax, [ebx + ecx * 4h - 20h] ; syntaxe Intel subl -0x20%ebx, %ecx, 0x4), %eax ; syntaxe AT&T Assembleur basique Un bloc de code assembleur se déclare grâce au mot-clef et se place entre parenthèse, avec un point-virgule après la parenthèse fermante. Il existe un autre mot-clef, asm, mais celui-ci peut créer des conflits avec certaines options de compilation comme -ansi. -ansi and the various -std options disable certain keywords. This causes trouble when you want to use GNU C extensions, or a generalpurpose header file that should be usable by all programs, including ISO C programs. The keywords asm, typeof and inline are not available in programs compiled with -ansi or -std although inline can be used in a program compiled with -std=c99 or -std=c11). Site de GCC Chaque instruction se déclare entre guillemets et doit être finie par \n\t. Cela permet de formater correctement les instructions pour les envoyer à Gas, l assembleur de GCC. Voici un exemple basique. "movl %eax, %ebx\n\t" "movl $56, %esi\n\t" "movb %ah, %ebx)" Cependant, en l état actuel des choses, ça reste assez limité. En effet, non seulement on ne peut pas interagir avec des variables, mais si en plus on modifie 2

3 des registres qui étaient utilisés par le programme avant l appel des routines assembleur, comment le signaler au compilateur? Heureusement, l assembleur inline est bien plus puissant que ça. L assembleur étendu L assembleur étendu va nous permettre de spécifier des opérandes d entrées, de sorties et les registres utilisés. On va aussi permettre à GCC de bien comprendre le code pour tenter si possible de l optimiser. Mais commençons par le commencement, la syntaxe. /* instructions assembleur */ : opérandes de sortie /* optionnel */ : opérandes d'entrée /* optionnel */ : liste des registres "pollués" ou clobber list /* optionnel */ Chaque opérande est constituée d une contrainte d opérande entre guillemets suivi d une expression en C variable, calcul, etc) entre parenthèses. Les opérandes sont séparées entre elles par des virgules. Par contre, le maximum total d opérandes est limité à 10, ou plus si la machine le permet voir les spécifications), mais vous n aurez que très rarement le cas de dépasser ce nombre. Les contraintes d opérandes sont les suivantes : "r" : dans n importe quel registre eax, ebx, etc) ; "a" : spécifiques aux registres eax, ax et al ; "b" : spécifiques aux registres ebx, bx et bl ; "c" : spécifiques aux registres ecx, cx et cl ; "d" : spécifiques aux registres edx, dx et dl ; "S" : pour les registres esi et si ; "D" : pour les registres edi et di ; "m" : lorsque l opérateur est dans la mémoire ; on peut donc effectuer des opérations directement sur l adresse mémoire sans avoir à passer par un registre. Cependant, il n est recommandé d utiliser cette contrainte que si elle est vraiment nécessaire ou si elle accélère suffisamment le processus une donnée trop grosse pour rentrer d un coup dans un registre). Par exemple dans un OS, l IDT définie par le noyau peut être chargée ainsi : c "lidt %0\n\t" : /* pas de sortie */ : "m"idt) 3

4 g : pour utiliser n importe quel registre général, adresse ou entier disponible. Il en existe également d autres spécifiques à l architecture x86 : "f" : pour un registre flottant ; "t" : pour le premier registre flottant ; "u" : pour le second registre flottant ; "q" : registre a, b, c ou d En plus de ces contraintes, il existe également des modificateurs de contrainte : "=" : signifie que l opérande est en écriture seule pour cette instruction, la valeur précédente est éliminée et remplacée par des données de sortie. Ce modificateur est utilisé pour les opérandes de sortie. "&" : signifie que l opérande sera modifiée avant la fin de la lecture de toutes les opérandes d entrées par l instruction en cours. Si l opérande n est pas modifiée avant la fin de la lecture, alors le modificateur est ignoré. "=&" : c est la combinaison des deux précédents. Le troisième paramètre est quant à lui la liste des registres utilisés dans le code assembleur sans compter les opérandes d entrée et de sortie. Elle permet d indiquer à GCC que nous gérons nous-mêmes ces registres. Ainsi, GCC ne vérifiera pas si la valeur chargée dans ces registres est valide, et il ne tentera pas non plus d y stocker des valeurs tant que nous n avons pas fini. Par contre, GCC connait les registres utilisés par les opérandes d entrée et de sortie, il ne faut donc pas les préciser. Il est temps de tout récapituler par un exemple. Prenons ce code qui additionne deux variables. int mainvoid) int foo = 10, bar = 15; "addl %%ebx, %%eax" : "=a"foo) : "a"foo), "b"bar) 4

5 printf"foo += bar = %d\n", foo return 0; On demande dans cette exemple de stocker la variable foo dans le registre eax "a"foo)), et la variable bar dans le registre ebx "b"bar)), puis on demande d additionner les deux registres et de stocker le résultat dans la variable foo "=a"foo)). On remarque ici que la liste des registres pollués n est pas précisée puisque les deux registres utilisés sont déjà connus d avance par GCC, car ils sont utilisés par les opérandes de sortie / d entrée. Plus d opérandes, de contraintes et de clobber list Il faut aussi préciser que pour un nombre x d opérateurs à la fois d entrée et de sortie), alors le premier opérande de sortie est numéroté 0, et le dernier opérande d entrée est numéroté x 1. Cela nous permet de manipuler directement nos variables dans le code assembleur, au contraire du code précédent où nous sommes passés par des registres bien spécifiques. Illustrons ce nouveau concept par un code. int mainvoid) int a = 10, b = 0; "movl %1, %%eax\n\t" "movl %%eax, %0\n\t" :"=r"b) :"r"a) :"%eax" printf"b = %d\n", b return 0; Il y a deux opérandes, donc "=r"b) est l opérande 0, représentée par %0, et "r"a) l opérande 1, représentée par %1. Le code charge donc la variable a et stocker son contenu dans eax, qui est lui même copié dans la variable b. Ainsi à la fin de l instruction, la variable a et la variable b valent toutes deux 10. Cela nous permet de manipuler plus précisément les opérandes d entrées et de sorties. On l utilise dans les cas suivants. 5

6 Dans le cas où on lit une variable pour écrire le résultat dans cette même variable. Dans les cas où il n est pas nécessaires de séparer les instances d entrées et de sorties. Cette possibilité s étend également aux contraintes des opérandes. En effet, pour une opérande d entrée, une contrainte composée d un chiffre x qui signifie cette entrée a les mêmes contraintes que la x me opérande de sortie. Cette technique est utilisée si on veut que l opérande d entrée et l opérande de sortie soient stockées dans le même registre. Prenons un exemple. int mainvoid) int a = 10, b = 25; "addl %2, %%eax\n\t" : "=a"a) : "0"a), "b"b) printf"a += b = %d", a return 0; Dans ce code, on demande à ce que l opérande d entrée 0 ait les mêmes contraintes que la 0 me opérande de sortie soit "=a"). Ainsi, les deux variables seront stockées dans le registre eax. Sans cette technique, il aurait fallu préciser que l opérande d entrée 0 devait être stockée dans le registre eax. Je termine cette sous-partie en ajoutant des précisions sur la liste des registres pollués. Si l instruction modifie le registre de condition de code, alors il faut rajouter "cc" à cette liste. Si l instruction modifie la mémoire de manière imprévisible, il faut ajouter "memory" à la liste. Si la mémoire modifiée n est pas listée dans les opérandes d entrée ou de sortie, il faut alors rajouter le mot-clef volatile. volatile Ce mot-clef est bien connu des programmeurs systèmes. Il permet de définir une variable de façon à ce que celle-ci ne puisse pas être placée dans un registre du processeur, mais en mémoire. Dans le cas de l assembleur inline, 6

7 il sert à empêcher les optimisations que pourrait faire GCC. Pour le forcer à respecter ce qu on a écrit à la lettre on utilise ce mot-clef, ou plutôt sa variante volatile, que l on place juste après. Il est à noter que s il n est pas nécessaire dans le cas de calculs, ou si le code ne produit aucun effet de bord), il ne sert à rien de le mettre : il est mieux de laisser GCC optimiser le code. goto Sachez également que depuis la version 4.5 de GCC il est possible d utiliser goto sur des blocs d assembleur. La syntaxe pour les utiliser est la suivante : goto "jmp %l[labelname]" : : : "memory" : labelname /* n'importe quel label utilisé */ Voici un exemple tiré du code source de GNU/Linux attention les yeux, ça risque de piquer un peu). // Works for both 32 and 64 bit #include <stdint.h> #define cmpxchg ptr, _old, _new, fail_label ) \ volatile uint32_t * ptr = volatile uint32_t *)ptr \ asm goto "lock; cmpxchg %1,%0 \t\n" \ "jnz %l[" #fail_label "] \t\n" \ : /* empty */ \ : "m" * ptr), "r" _new), "a" _old) \ : "memory", "cc" \ : fail_label \ Variables globales et fonctions Depuis tout à l heure, nous n avons vu que le chargement de variables locales à une fonction. Il est pourtant possible de charger des variables globales, et c est même encore plus facile! En effet, il suffit d écrire directement dans le code ceci : _ID, sans même passer par les opérandes d entrées et de sortie. Exemple. int b = 25; 7

8 int mainvoid) int a = 10; "addl _b, %%eax\n\t" : "=a"a) : "0"a) printf"a += b = %d", a return 0; Il est de même pour les appels de fonctions. fonction puts. Voici un exemple appelant la const char * str = "Hello world!"; int mainvoid) "movl _str, %eax\n\t" "pushl %eax\n\t" "call _puts\n\t" "add $8, %esp\n\t" "leave\n\t" "ret\n\t" return 0; Exemples Pour illustrer cette grosse partie théorique, je vais prendre des exemples que j ai pu voir sur Internet, accompagnés de quelques explications. Mise à zéro de bit "btsl %1,%0" 8

9 : "=m" ADDR) : "Ir" pos) : "cc" Ce code permet de mettre à 1 le bit numéro pos de l adresse ADDR. Si on avait voulu mettre le bit à 0, on aurait utilisé l instruction btrl. strcpy Ce code tiré de la Glibc de Linux est celui de la fonction strcpy. static inline char * strcpychar * dest, const char * src) int d0, d1, d2; volatile "1:\tlodsb\n\t" "stosb\n\t" "testb %%al,%%al\n\t" "jne 1b" : "=&S" d0), "=&D" d1), "=&a" d2) : "0" src), "1" dest) : "memory" return dest; L adresse de la chaîne source est située dans esi, celle de la chaîne de destination dans edi. Dès que l on atteint 0, la copie est terminée. Les contraintes "=&S", "=&D", "=&a" indiquent que les registres esi, edi and eax seront utilisés, donc GCC ne stockera rien dedans. L instruction lodsb charge dans le registre al l octet adressé par di:si, si le flag DF vaut 0 après ça, si est incrémenté, sinon décrémenté. L instruction stosb stocke le contenu de al dans l octet pointé par es:di, si le flag DF vaut 0 après ça, di est incrémenté, sinon décrémenté. Des instructions inaccessibles? Il est fréquent lors de la création d un système d exploitation d écrire sur divers ports pour s adresser au PIC par exemple), ou bien pour activer / désactiver les interruptions. Or il n existe pas en C de fonction pour se faire. On a donc recours à l assembleur inline. Dans cette exemple, on utilise des #define, ce qui s avère pratique quand on appelle plusieurs fois la même instruction. /* désactive les interruptions */ #define cli "cli"::) 9

10 /* réactive les interruptions */ #define sti "sti"::) /* écrit un octet sur un port */ #define outbport, value) \ volatile "outb %%al, %%dx" :: "d" port), "a" value) /* lit un octet sur un port */ #define inbport) \ unsigned char _v; \ volatile "inb %%dx, %%al" : "=a" _v) : "d" port) \ _v; \ ) Utiliser la syntaxe Intel Pour ceux qui maitriserait mal la syntaxe AT&T ou qui par gouts personnels préfèrent la syntaxe Intel, il est possible d utiliser cette dernière. Pour cela, il suffit de rajouter deux lignes dans son code assembleur : ".intel_syntax noprefix\n\t" au début et ".att_syntax" à la fin. Toute instruction écrite entre ces deux lignes sera considérée comme utilisant la syntaxe Intel. Exemple. int a; ".intel_syntax noprefix\n\t" "mov ax, 2\n\t" "shl ax, 2\n\t" ".att_syntax" :"=r"a) Concernant le passage en argument, la méthode est la même que pour la syntaxe AT&T. Exemple avec une variable globale puis un paramètre de fonction la méthode est identique pour les variables locales). const char * const str = "Hello world!"; void asm_printvoid) 10

11 ".intel_syntax noprefix\n\t" "mov eax, _str\n\t" "push eax\n\t" "call _puts\n\t" "add esp, 8\n\t" "leave\n\t" "ret\n\t" ".att_syntax" void asm_print_with_argsconst char * s) ".intel_syntax noprefix\n\t" "push eax\n\t" "mov eax, %0\n\t" "call _puts\n\t" "add esp, 8\n\t" "leave\n\t" "ret\n\t" ".att_syntax" : : "r"s) Cet article n a pas pour but d être exhaustif, ce qui est impossible, mais plutôt de présenter une introduction à l assembleur inline avec GCC. Pour continuer votre route, voici le document original duquel est tiré en grande partie cet article, ainsi qu une liste de liens. 11

Programmation assembleur sur l architecture x86

Programmation assembleur sur l architecture x86 Mini-projet système : développement d un noyau de système d exploitation Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Programmation assembleur sur l architecture x86

Plus en détail

La famille x86. Eduardo Sanchez Laboratoire de Systèmes Logiques. Ecole Polytechnique Fédérale de Lausanne

La famille x86. Eduardo Sanchez Laboratoire de Systèmes Logiques. Ecole Polytechnique Fédérale de Lausanne La famille x86 Laboratoire de Systèmes Logiques Désavantages de l architecture x86 Très vieille architecture: basée sur le 8080 (commercialisé en 1974, 6 000 transistors et 8 registres) Le premier 8086

Plus en détail

Introduction. Compilation en C. Annexe Petit Traité Pratique sur l'utilisation de Gcc sous Linux. Première partie. Deuxième partie.

Introduction. Compilation en C. Annexe Petit Traité Pratique sur l'utilisation de Gcc sous Linux. Première partie. Deuxième partie. Annexe Petit Traité Pratique sur l'utilisation de Gcc sous Linux par B.Albar 3 juin 2008 Résumé : Démystication de gcc sous linux. Le code source et l'ensemble du texte présenté dans ce document a été

Plus en détail

Logiciel de Base : examen de première session

Logiciel de Base : examen de première session Logiciel de Base : examen de première session ENSIMAG 1A Année scolaire 2008 2009 Consignes générales : Durée : 2h. Tous documents et calculatrices autorisés. Le barème est donné à titre indicatif. Les

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

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

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

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

Unité A7 : La pile. Unité A7 : La pile

Unité A7 : La pile. Unité A7 : La pile Objectifs À la fin de cette unité vous saurez comment la pile est utilisée pour passer les paramètres aux sous-programmes, effectuer l'allocation dynamique des variables locales de ces sous-programmes

Plus en détail

Structure d un programme

Structure d un programme Architecture des ordinateurs Cours 6 Structure d un programme 3 décembre 2012 Archi 1/30 Programme en Assembleur Archi 2/30 Sections de données programme en assembleur = fichier texte (extension.asm) organisé

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

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

Conception et exploitation des processeurs

Conception et exploitation des processeurs Chargés de cours : Frédéric Pétrot et Sébastien Viardot Année universitaire 2011-2012 Structure du cours C1 C2 C3 au VHDL aux langages d'assemblage pour les ISA x86 et MIPS Conventions pour les appels

Plus en détail

Assembleur x86. P. Ezéquel

Assembleur x86. P. Ezéquel Assembleur x86 P. Ezéquel 1 TABLE DES MATIÈRES 2 Table des matières 1 Introduction 3 2 Anatomie du x86 3 2.1 Registres généraux.......................... 4 2.2 Registres de base de segments....................

Plus en détail

Programmation assembleur : aperçu

Programmation assembleur : aperçu Assembleur : Younès EL AMRANI. 1 Programmation assembleur : aperçu Programmation en assembleur : NASM Module M14 Semestre 4 Printemps 2010 Equipe pédagogique : Younès El Amrani, Abdelhakim El Imrani, Faissal

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 7 17 décembre 2012 Archi 1/1 Fonctions, suite et fin Archi 2/1 Rappel Forme générale d un sous-programme (fonction) : etiquette sousprogramme: push ebp ; empile la valeur

Plus en détail

Programmation en assembleur Gnu sur des microprocesseurs de la gamme Intel (du 80386 au Pentium-Pro) ENSIMAG. Première année

Programmation en assembleur Gnu sur des microprocesseurs de la gamme Intel (du 80386 au Pentium-Pro) ENSIMAG. Première année Programmation en assembleur Gnu sur des microprocesseurs de la gamme Intel (du 80386 au Pentium-Pro) ENSIMAG Première année Année 2009 X. Rousset de Pina Sommaire 1. Introduction......1 2. L architecture

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

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

Architecture matérielle et logicielle

Architecture matérielle et logicielle Architecture matérielle et logicielle Contents I Le Cours 2 1 Généralités 2 2 Micro-processeur 2 3 Mémoire 2 4 Performances 3 II TPs 3 1 Création d un exécutable : 3 2 Les bibliothèques 3 3 Codage de l

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

Travail d étude Les techniques de protection du logiciel

Travail d étude Les techniques de protection du logiciel Travail d étude Les techniques de protection du logiciel Julien Burle Présenté par: Térence Scalabre Licence Informatique Comment et pourquoi protéger son logiciel? Tout d abord intéressons-nous aux raisons

Plus en détail

Programmation en assembleur Gnu sur des microprocesseurs de la gamme Intel (du 80386 au Pentium-Pro)

Programmation en assembleur Gnu sur des microprocesseurs de la gamme Intel (du 80386 au Pentium-Pro) Programmation en assembleur Gnu sur des microprocesseurs de la gamme Intel (du 80386 au Pentium-Pro) Ensimag et Section Télécom commune à l Ensimag et l Erg Première année. Brouillon : vendredi 13 octobre

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

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 5 19 novembre 2012 Archi 1/21 La couche ISA (Instruction Set Architecture) Archi 2/21 Rappel : architecture en couches 5. Langages haut niveau Compilation 4. Langage

Plus en détail

Logiciel de Base : examen de deuxième session

Logiciel de Base : examen de deuxième session Logiciel de Base : examen de deuxième session ENSIMAG 1A Année scolaire 2009 2010 Consignes générales : Durée : 1h. Tous documents et calculatrices autorisés. Vous serez noté sur la précision de vos réponses

Plus en détail

INFORMATIQUE INDUSTRIELLE

INFORMATIQUE INDUSTRIELLE INFORMATIQUE INDUSTRIELLE TR 1. 1 0. Préambule INFORMATIQUE INDUSTRIELLE : INFORMATIQUE AVEC CONTRAINTE DE TEMPS INFORMATIQUE AVEC PERIPHERIQUES D E/S INFORMATIQUE AVEC CONTRAINTE DE TEMPS Intervention

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

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

Programmation en assembleur

Programmation en assembleur Programmation en assembleur Architecture des Ordinateurs Module M14 Semestre 4 Printemps 2008 Coordinateur du module M14: Younès EL Amrani Formats d'opérandes en assembleur IA32 Modes d'adressage Type

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

1 : 1 er programmes & prise en main de l environnement

1 : 1 er programmes & prise en main de l environnement 1 : 1 er programmes & prise en main de l environnement 1 Introduction 1.1 Rappel : gestion d arborescence et de fichiers sous UNIX Pour la manipulation de répertoire et de fichier à partir d un terminal

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

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

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

Programmation 1, leçon 2

Programmation 1, leçon 2 Programmation 1, leçon 2 Jean Goubault-Larrecq ENS Cachan goubault@lsv.ens-cachan.fr 24 septembre 2013 1 Architecture et assembleur Nous allons maintenant regarder un peu plus en profondeur encore comment

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

Chapitre 1 I:\ Soyez courageux!

Chapitre 1 I:\ Soyez courageux! Chapitre 1 I:\ Soyez courageux! Pour ne rien vous cacher, le langage d'assembleur (souvent désigné sous le terme "Assembleur", bien que ce soit un abus de langage, puisque "Assembleur" désigne le logiciel

Plus en détail

J.-M Friedt. FEMTO-ST/département temps-fréquence. jmfriedt@femto-st.fr. transparents à jmfriedt.free.fr. 19 janvier 2015

J.-M Friedt. FEMTO-ST/département temps-fréquence. jmfriedt@femto-st.fr. transparents à jmfriedt.free.fr. 19 janvier 2015 Informatique FEMTO-ST/département temps-fréquence jmfriedt@femto-st.fr transparents à jmfriedt.free.fr 19 janvier 2015 1 / 15 16 séances Plan des cours 1 C pour microcontroleurs : volatile, tailles de

Plus en détail

III - PROGRAMMATION EN ASSEMBLEUR

III - PROGRAMMATION EN ASSEMBLEUR III - PROGRAMMATION EN ASSEMBLEUR 3.1 Introduction à la programmation en assembleur Pour programmer un ordinateur on utilise généralement des langages dits évolués ou de haut niveau : C, C++, Java, Basic,

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs (2 ème partie : assembleur 80x86) Vincent Vidal IUT Lens Architecture des ordinateurs p. 1 Organisation Durée : 8 semaines. Cours 1h, TP 3h Intervenants TP : Coste, Loukil,

Plus en détail

Apple - QuickTime Player Déréférence Arbitraire de Pointeur

Apple - QuickTime Player Déréférence Arbitraire de Pointeur Apple - QuickTime Player Déréférence Arbitraire de Pointeur Fournisseur: Apple Système affecté : QuickTime Player v715 for Windows QuickTime Player v72 for Windows QuickTime Player v73 for Windows Chronologie

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

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

Initiation au langage d assemblage x86

Initiation au langage d assemblage x86 Initiation au langage d assemblage x86 Emmanuel Saracco Easter-eggs.com esaracco@easter-eggs.com esaracco@free.fr Initiation au langage d assemblage x86 par Emmanuel Saracco Copyright 2002, 2003, 2004

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

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

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

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

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 4 Le langage assembleur : Introduction et Présentation de l assembleur du 8086 3ème année Niveaux de programmation (rappel) MUX... 0/1 Unité

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

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

Notes sur la compilation séparée

Notes sur la compilation séparée Annexe B Notes sur la compilation séparée Ce document est probablement imparfait, mais il devrait déjà donner une introduction raisonnable au sujet traité... B.1 Introduction La compilation séparée est

Plus en détail

Projet de Machines Virtuelles

Projet de Machines Virtuelles Projet de Machines Virtuelles Gabriel Kerneis Vendredi 11 mars 2011 1 Introduction Le but de ce sujet est d implémenter la MARS (Memory Array Redcode Simulator), une machine virtuelle utilisée dans le

Plus en détail

Projet de cryptographie. Algorithme de cryptage de type Bluetooth

Projet de cryptographie. Algorithme de cryptage de type Bluetooth Projet de cryptographie Algorithme de cryptage de type Bluetooth Le but de ce projet est de créer une application qui crypte et décrypte des fichiers en utilisant le principe de cryptage du Bluetooth.

Plus en détail

L assembleur x86 32 bits. Plan. Plan. Architecture des ordinateurs. L excellent PC Assembly Language de Paul A. Carter http ://www.drpaulcarter.

L assembleur x86 32 bits. Plan. Plan. Architecture des ordinateurs. L excellent PC Assembly Language de Paul A. Carter http ://www.drpaulcarter. Généralité Langage Assembleur Programmation assembleur Généralité Langage Assembleur Programmation assembleur Références L assembleur x86 32 bits Architecture des ordinateurs Guillaume Blin IGM-LabInfo

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

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

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

GELE5343 Chapitre 2 : Révision de la programmation en C

GELE5343 Chapitre 2 : Révision de la programmation en C GELE5343 Chapitre 2 : Révision de la programmation en C Gabriel Cormier, Ph.D., ing. Université de Moncton Hiver 2013 Gabriel Cormier (UdeM) GELE5343 Chapitre 2 Hiver 2013 1 / 49 Introduction Contenu 1

Plus en détail

0.1 Création d une bibliothèque

0.1 Création d une bibliothèque 0.1 Création d une bibliothèque 1 0.1 Création d une bibliothèque Je vais ici simplement me contenter de reprendre l exemple de l introduction et réécrire le programme cette fois en utilisant une bibliothèque

Plus en détail

Avant-propos. 1. Introduction

Avant-propos. 1. Introduction Avant-propos Les sections ou sous-sections marquées d un astérisque (*) ne font pas partie de la matière du cours IFT1969. Elles sont destinées à définir complètement le langage C (ANSI-C99) et à en préciser

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

Cours Architecture des ordinateurs (Archi II) Entrées / Sorties Resp. Mr Mohamed Feredj MCA Courriel : archiferedj@gmail.com

Cours Architecture des ordinateurs (Archi II) Entrées / Sorties Resp. Mr Mohamed Feredj MCA Courriel : archiferedj@gmail.com Cours Architecture des ordinateurs (Archi II) Entrées / Sorties Resp. Mr Mohamed Feredj MCA Courriel : archiferedj@gmail.com 1 1) Objectif Discuter comment les données sont transférées entre le et les

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

I. Introduction à MATLAB

I. Introduction à MATLAB 1. Introduction Le nom MATLAB est la contraction du terme anglais matrix laboratory [1]. Ce logiciel est spécialement conçu pour le calcul scientifique et la manipulation de vecteurs et de matrices. Le

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

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

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

DUT Informatique Architecture des ordinateurs Année 2012/2013. - Aucun document autorisé - Calculatrices interdites - Durée : 2 heures -

DUT Informatique Architecture des ordinateurs Année 2012/2013. - Aucun document autorisé - Calculatrices interdites - Durée : 2 heures - DUT Informatique Architecture des ordinateurs Année 2012/2013 - Aucun document autorisé - Calculatrices interdites - Durée : 2 heures - NOM, prénom : Dans tous les exercices, vous pouvez utiliser les fonctions

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

Méthodologie de programmation en assembleur. Philippe Preux

Méthodologie de programmation en assembleur. Philippe Preux Méthodologie de programmation en assembleur Philippe Preux 24 novembre 1997 Table des matières 1 Introduction 3 2 Méthodologie 4 2.1 Méthodologie............................................. 4 2.2 Aperçu

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

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

Shikata Deshita. Romain LESTEVEN

Shikata Deshita. Romain LESTEVEN Shikata Deshita Romain LESTEVEN 7 août 2015 TABLE DES MATIÈRES TABLE DES MATIÈRES Table des matières 1 Introduction 2 2 Encodage de shellcode 3 3 Shikata Ga Nai 4 3.1 Présentation.............................

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

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

Programmation impérative

Programmation impérative Programmation impérative Cours 4 : Manipulation des fichiers en C Catalin Dima Organisation des fichiers Qqs caractéristiques des fichiers : Nom (+ extension). Chemin d accès absolu = suite des noms des

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

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

Adressage, directives assembleur. Jacques Chassin de Kergommeaux (d après X. Rousset)

Adressage, directives assembleur. Jacques Chassin de Kergommeaux (d après X. Rousset) Adressage, directives assembleur Jacques Chassin de Kergommeaux (d après X. Rousset) 1 Langage d assemblage Rôle d un langage d assemblage Fournir une représentation symbolique des instructions et des

Plus en détail

ARCHITECTURE DES ORDINATEURS Corrigé Examen Décembre 2011 3H Tous documents autorisés Les questions sont indépendantes

ARCHITECTURE DES ORDINATEURS Corrigé Examen Décembre 2011 3H Tous documents autorisés Les questions sont indépendantes On utilise le jeu d instructions ARM. ARCHITECTURE DES ORDINATEURS Corrigé Examen Décembre 2011 3H Tous documents autorisés Les questions sont indépendantes PROGRAMMATION ASSEMBLEUR PREMIERE PARTIE Soit

Plus en détail

De l ordinateur au processus : rôle d un système

De l ordinateur au processus : rôle d un système De l ordinateur au processus : rôle d un système Introduction aux systèmes d exploitation Gaël Thomas Présentation du cours Contexte du cours : Introduire notre objet d étude : les systèmes d exploitation

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

S. Laporte C# mode console DAIGL TS1

S. Laporte C# mode console DAIGL TS1 Bases du langage C# I. C# en mode console (mode texte) Avantages par rapport au mode graphique (Application Windows): - C'est un mode plus proche de l'approche algorithmique (pas de notions de composants,

Plus en détail

Tableau à une dimension. Exemple. Utilisation de constantes en assembleur

Tableau à une dimension. Exemple. Utilisation de constantes en assembleur Les tableaux en langage d assemblage Introduction Nous avons vu comment sont gérés les variables possédant des types élémentaires : entier signés ou non, caractères Un tableau!en langage de haut niveau:

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

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail

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

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

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 6 : Principes de la représentation des nombres en

Cours 6 : Principes de la représentation des nombres en Cours 6 : Principes de la représentation des nombres en mémoire 2013/2014 Introduction Représentation des données en mémoire naturels signés Nous décrivons les principes de la représentation des nombres

Plus en détail

Édition de liens. 1 Programme unique. Ensimag 1A Apprentissage. 1.1 Listing d assemblage. offset codop. .section.rodata

Édition de liens. 1 Programme unique. Ensimag 1A Apprentissage. 1.1 Listing d assemblage. offset codop. .section.rodata Édition de liens Ensimag 1A Apprentissage 2010 1 Programme unique 1.1 Listing d assemblage offset codop.section.rodata 25 73 20 25 sortie:.asciz "%s %s %c%c%c%c%c%c%c %s%c %s%c\n" 73 20 25 63 25 63 25

Plus en détail

Les exceptions en Java

Les exceptions en Java Chapitre 6 Les exceptions en Java Lorsqu on conçoit un programme, on essaie évidemment qu il soit correct, c est-à-dire qu il fonctionne parfaitement dans les conditions prévues de son utilisation. L utilisateur

Plus en détail

Ecrire un Makefile, sans douleur et en quelques leçons.

Ecrire un Makefile, sans douleur et en quelques leçons. Ecrire un Makefile, sans douleur et en quelques leçons. M. Billaud Département Informatique Institut Universitaire de Technologie Université Bordeaux 1 Mai 2010 Résumé Ce document montre comment écrire

Plus en détail

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens Année académique 2009 2010 1 Introduction Ce projet est le premier d une série de quatre projets qui ont

Plus en détail

Algorithmique Partie 1

Algorithmique Partie 1 Algorithmique Partie 1 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1 Modalités Sommaire 1 Modalités 2 Programmation 3 Données 4 Opérateurs

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

LE BIOS : QU EST-CE QUE C EST?

LE BIOS : QU EST-CE QUE C EST? LE BIOS : QU EST-CE QUE C EST? Mewtow 29 octobre 2015 Table des matières 1 Introduction 5 2 Rappels sur le mode réel des processeurs x86 7 2.1 Mémoire en mode réel............................... 7 2.1.1

Plus en détail