Architecture des ordinateurs

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

Download "Architecture des ordinateurs"

Transcription

1 Architecture des ordinateurs Cours 7 17 décembre 2012 Archi 1/1

2 Fonctions, suite et fin Archi 2/1

3 Rappel Forme générale d un sous-programme (fonction) : etiquette sousprogramme: push ebp ; empile la valeur originale de ebp ebp, esp ; ebp = esp ; code du sous-programme pop ebp ; restaure l ancienne valeur de ebp Un sous-programme peut être appelé comme suit : push param ; passe un paramètre fnc ; appelle la fonction fnc add esp, 4 ; ire le paramètre de la pile Le dernier paramètre empilé est désigné par [ebp+8] dans fnc L avant dernier paramètre par [ebp+12], etc... Archi 3/1

4 Afficher des rayures On souhaite écrire un programme qui affiche k rayures verticales sur n lignes. Les rayures doivent être dessinées en utilisant un caractère choisi par l utilisateur. Archi 4/1

5 rayures.asm (version commentée sur la page du cours) %include "asm_io.inc" SECTION.data msg1:db "nb bandes?",10,0 msg2:db "nb lignes?",10,0 msg3:db "caractere?",10,0 blanc: db " ",0 SECTION.bss nbb: resd 1 nbl: resd 1 SECTION.text global main main: eax, msg1 print_string read_int [nbb], eax eax, msg2 print_string read_int [nbl], eax eax,msg3 print_string read_char read_char ;!! ecx, [nbl] push eax push dword [nbb] nxt: ligne loop nxt add esp, 4 pop eax fin: ebx, 0 eax, 1 int 0x80 ligne: push ebp ebp, esp push ecx ecx, [ebp+8] sv: eax, [ebp+12] print_char eax, blanc print_string loop sv print_nl pop ecx pop ebp Archi 5/1

6 Écrire une fonction récursive pas de différence avec une fonction classique MAIS : Bien respecter les règles de préservation de la pile est crucial lors de l écriture d une fonction récursive! Exemple de fonction récursive simple : calculer la somme des entiers de 1 à n. En C : int somme_rec (int n){ if (n = 1) urn 1; else urn n + somme_rec(n-1); } Archi 6/1

7 somme rec.asm (version commentée sur la page du cours) %include "asm_io.inc" SECTION.data msg1: db "Un entier?",10,0 msg2: db 10,"Somme: ",0 SECTION.text global main main: eax, msg1 print_string read_int ebx, eax eax, msg2 print_string push ebx somme add esp, 4 print_int print_nl fin: ebx, 0 eax, 1 int 0x80 somme:push ebp ebp, esp ebx, [ebp+8] cmp ebx, 1 je stop dec ebx push ebx somme add esp, 4 add jmp stop: eax, 1 fin_somme: pop eax, [ebp+8] fin_somme ebp Archi 7/1

8 Évolution de la pile s b 3 ### avant le 1er appel à somme_rec s b 3 ### somme_rec s b 3 ### push ebp ebp, esp s b 2 3 ### s b avant le 2e appel à somme_rec ### s b avant le 3e appel à somme_rec ### fin de la récursion s b 2 3 ### 1 eax s b 3 ### 1+2=3 eax s b ### 3+3=6 eax Une procédure non récursive aurait-elle été plus efficace? Archi 8/1

9 Les variables locales... La pile peut être utilisée pour stocker des variables locales. Permet d écrire des sous-programmes ré-entrants pas de registres, ni d adresse fixe. Utiliser la pile pour les variables économise de la mémoire (par opposition aux variables globales) et les registres. Les variables locales sont stockées immédiatement après la valeur de ebp sauvegardée dans la pile. Allocation : soustraire de esp le nombre d octets requis. fct: push ebp ; empile la valeur originale de ebp ebp, esp ; ebp = esp sub esp,??... esp, ebp ; désalloue les variables locales pop ebp ; restaure la valeur de ebp On utilise ebp pour localiser les variables locales. Archi 9/1

10 Exemple de variables locales fct: push ebp ; empile la valeur originale de ebp ebp, esp ; ebp = esp sub esp, 8 ; 2 variables locales de 4 octets... esp, ebp ; désalloue les variables locales pop ebp ; restaure la valeur de ebp... esp ebp-8 var. locale... ebp-4 var. locale esp ebp ebp prec. ebp ebp prec. ebp+4 adr. de ebp+4 adr. de Les 2 variables locales sont accessibles depuis n importe quel endroit du sous-programme ; pour les utiliser : [ebp-4] et [ebp-8] Archi 10/1

11 sommes.asm (version commentée sur la page du cours) %include "asm_io.inc" SECTION.data msg1: db "Un entier?",10,0 somme: push ebp ebp, esp sub esp, 4 somme: push ; 2eme version ebp ebp, esp SECTION.text global main main: eax, msg1 print_string read_int print_nl push ecx dword [ebp-4], 0 ecx, [ebp+8] nxt: add [ebp-4], ecx loop nxt push 0 push ecx ecx, [ebp+8] nxt: add [ebp-4], ecx loop nxt push eax somme add esp, 4 pop eax, [ebp-4] ecx pop eax, [ebp-4] ecx fin:... print_int print_nl fin_somme: esp, ebp pop ebp fin_somme: esp, ebp pop ebp Archi 11/1

12 Les tableaux Archi 12/1

13 Tableaux en assembleur Pas de structure de tableau à proprement parler. Tableau = bloc contigu de données en mémoire. Tous les éléments occupent le même espace en mémoire. Pour accéder à un élément, on utilise : l adresse du premier élément du tableau : adr le nombre d octets occupés par un élément : taille l indice de l élément : indice [ adr + taille*indice ] Exemple : SECTION.data tab1: db 1,2,3,4,5,6,7,8,9 tab2: dw 10,20,30,40,50,60,70,80,90 SECTION.bss tab3: resd 9 SECTION.text... ecx, 9 next: eax, 0 al, [tab1 + ecx] add ax, [tab2 + 2*ecx] [tab3 + 4*ecx], eax loop next... Archi 13/1

14 squares.asm (version commentée sur la page du cours) %include "asm_io.inc" SECTION.data msg: db "i<20?",10,0 t1: db "tab[",0 t2: db "]= ",0 blanc: db tab: dw 5,1,23,4,... SECTION.bss tab2: resd 20 SECTION.text global main main: eax, msg print_string read_int ebx, eax eax, t1 print_string eax, ebx print_int eax, t2 print_string eax, 0 ax, [tab+2*ebx] print_int print_nl ebx, 0 nxt: eax, 0 ax, [tab+2*ebx] mul eax [tab2+4*ebx], eax inc ebx cmp ebx, 20 jne nxt fnc fin:... fnc: push ebp ebp, esp ebx, 0 na: eax, [tab2+4*ebx] print_int eax, [blanc] print_char inc ebx cmp ebx, 20 jne na fin_fnc: pop ebp print_nl Archi 14/1

15 fibo.asm (version commentée sur la page du cours) %include "asm_io.inc" SECTION.data msg1:db "entier <40?",10,0 msg2:db " premiers: ",0 blanc:db SECTION.bss n: resd 1 fibo: resd 40 SECTION.text global main main: ; remplissage du tableau dword [fibo], 1 dword [fibo+4], 1 ecx, 0 nxt: eax, [fibo+4*ecx] ebx, [fibo+4*ecx+4] add eax, ebx [fibo+4*ecx+8], eax inc ecx cmp ecx, 38 jne nxt ; affichage eax, msg1 print_string read_int [n], eax push dword [n] aff_n add esp, 4 fin: ebx, 0 eax, 1 int 0x80 aff_n: push ebp ebp, esp; dword eax, [ebp+8] print_int eax, msg2 print_string ebx, 0 ecx, 40 na: eax, [fibo+4*ebx] print_int eax, [blanc] print_char inc ebx cmp ebx, [ebp+8] loopne na print_nl fin_aff_n: pop ebp Archi 15/1

16 Les chaînes de caractères sont des tableaux... Chaîne de caractères en assembleur = bloc contigu d octets en mémoire, terminé par un 0. = tableau d octets (caractères en ascii) terminé par un 0. Exemple (lecture du prénom au clavier) : %include "asm_io.inc" SECTION.data msg1: db "Quel est ton nom?",10,0 msg2: db "Bonjour ",0 SECTION.bss prenom: resb 20 SECTION.text global main main: eax, msg1 print_string ecx, 19 ebx, 0 nxt: read_char [prenom+ebx], eax inc ebx cmp eax, 10 loopne nxt byte [prenom+ebx], 0 eax, msg2 print_string eax, prenom print_string Archi 16/1

17 majuscule.asm %include "asm_io.inc" SECTION.data msg: db "texte?",10,0 lt1: db a lt2: db A blanc:db SECTION.bss min: resb 100 maj: resb 100 lg: resd 1 moins:resd 1 SECTION.text global main main: eax, [lt1] sub eax, [lt2] [moins],eax eax, msg print_string (version commentée sur la page du cours) push min push lg read_string add esp, 8 ebx, 0 nxt: al, [min+ebx] cmp al, [blanc] je espace sub al, [moins] espace: [maj+ebx], al inc ebx cmp ebx, [lg] jne nxt byte [maj+ebx], 0 fin:... print_nl eax, maj print_string print_nl read_string: push ebp ebp, esp pusha edx, [ebp+12] ecx, 99 ebx, 0 nxt_rs: read_char [edx+ebx], al inc ebx cmp al, 10 loopne nxt_rs byte [edx+ebx], 0 edx, [ebp+8] dec ebx [edx], ebx popa fin_read_string: pop ebp Archi 17/1

18 Vers les langages haut niveau Archi 18/1

19 Rappel : architecture en couches 5. Langages haut niveau Compilation 4. Langage d assemblage Assembleur 3. Système d exploitation Appels système 2. Jeu d instructions propre à chaque machine (ISA) Microprogrammes : micro-instructions binaires 1. Micro-architecture (UAL, opérations, registres,...) Assemblage physique des portes logiques 0. Circuits logiques Archi 19/1

20 Exemple de compilation : gcc -S -masm=intel add.c int main(){ int i, sum = 0; for ( i = 1; i <= 10; i++ ) sum += i; printf("sum = %d \n", sum); urn 0; }.file "add.c".intel_syntax noprefix.section.rodata.lc0:.string "sum = %d \n".text.globl main.type main: lea ecx, [esp+4] and esp, -16 push DWORD PTR [ecx-4] push ebp ebp, esp push ecx sub esp, 36 DWORD PTR [ebp-8], 0 DWORD PTR [ebp-12], 1 jmp.l2.l3: eax, DWORD PTR [ebp-12] add DWORD PTR [ebp-8], eax add DWORD PTR [ebp-12], 1.L2: cmp DWORD PTR [ebp-12], 10 jle.l3 eax, DWORD PTR [ebp-8] DWORD PTR [esp+4], eax DWORD PTR [esp], OFFSET FLAT:.LC0 printf eax, 0 add esp, 36 pop ecx pop ebp lea esp, [ecx-4].size main,.-main.ident "GCC: (Gentoo r3 p1.6, pie ) Archi 20/1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

É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

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

Assembleur x86. Eric Cariou. Université de Pau et des Pays de l'adour Département Informatique. Eric.Cariou@univ-pau.fr

Assembleur x86. Eric Cariou. Université de Pau et des Pays de l'adour Département Informatique. Eric.Cariou@univ-pau.fr Assembleur x86 Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Niveaux de programmation Du plus bas niveau (1) au plus abstrait (6) 1) Impulsions

Plus en détail

Castle in the Skype. Fabrice DESCLAUX

Castle in the Skype. Fabrice DESCLAUX Fabrice DESCLAUX Castle in the Skype 1/31 Castle in the Skype Fabrice DESCLAUX serpilliere(at)rstack.org / fabrice.desclaux(at)eads.net EADS Corporate Research Center DCR/STI/C SSI Lab Suresnes, FRANCE

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

L assembleur avec GCC

L assembleur avec GCC 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.

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

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

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

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

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

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

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

Plus en détail

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

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

Optimisation des shellcodes sous Linux Michał Piotrowski

Optimisation des shellcodes sous Linux Michał Piotrowski Optimisation des shellcodes sous Linux Michał Piotrowski Article publié dans le numéro 5/2005 du magazine hakin9 Tous droits reservés. La copie et la diffusion de l'article sont admises à condition de

Plus en détail

Département informatique de l université d Angers

Département informatique de l université d Angers Département informatique de l université d Angers Amélioration d'un logiciel d'émulation du fonctionnement d'un microprocesseur x8 6 SCHAEFFER Florian ROUSSEAUX Billy L3 Informatique Responsable du projet:

Plus en détail

Compilation. Introduction à la compilation. Termes Phases d'un compilateur Importance des grammaires Méthodes d'analyse. Termes. Termes.

Compilation. Introduction à la compilation. Termes Phases d'un compilateur Importance des grammaires Méthodes d'analyse. Termes. Termes. Compilation Enseignants : Stéphane Talbot Miguel Tomasena Volume horaire : 10.5 C / 12 TD / 12 TP langage source Traduction langage cible Contenu : Introduction à la compilation Analyse Lexicale Analyse

Plus en détail

Déprotection semi-automatique de binaire

Déprotection semi-automatique de binaire A. Gazet & Y. Guillot Déprotection semi-automatique de binaire 1/49 Déprotection semi-automatique de binaire avec : celui qui fond dans la bouche et pas dans la main. Alexandre Gazet Yoann Guillot A. Gazet

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

Architecture de Processeur

Architecture de Processeur Mise à jour: Février 2012 Architecture et Programmation [Archi/Lycée] Architecture logicielle Applications 2 Nicolas Bredèche Maître de Conférences Université Paris-Sud bredeche@lri.fr Ressources bibliographiques

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

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

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

FAILLES APPLICATIVES INTRODUCTION & EXPLOITATION. Projet Tutorat Réseau / Sécurité INSA de Lyon 2011

FAILLES APPLICATIVES INTRODUCTION & EXPLOITATION. Projet Tutorat Réseau / Sécurité INSA de Lyon 2011 FAILLES APPLICATIVES INTRODUCTION & EXPLOITATION Projet Tutorat Réseau / Sécurité INSA de Lyon 2011 Lucas Bouillot Arnaud Kleinpeter Gaétan Bouquet Xavier Paquin INTRODUCTION INTRODUCTION Qu est ce qu

Plus en détail

Fonctionnement d un processeur. Fonctionnement d un processeur. Assembleur x86. Mémoire centrale et adresse

Fonctionnement d un processeur. Fonctionnement d un processeur. Assembleur x86. Mémoire centrale et adresse Mémoire centrale et adresse Assembleur x86 Comment est organisée la mémoire centrale? La mémoire est composée d'une suite d'emplacements numérotés séquentiellement, et pouvant contenir un nombre codé sur

Plus en détail

Introduction à la rétro-ingénierie de binaires

Introduction à la rétro-ingénierie de binaires Introduction à la rétro-ingénierie de binaires Ge0 27/09/2014 Article Introduction Dans le domaine de l informatique, et plus précisément celui de la programmation, nous développons et utilisons des programmes.

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

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

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

Plus en détail

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

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

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani La récursivité 2 Définition Une procédure ou une fonction est dite récursive si elle fait appel à elle même, directement ou indirectement. 3 Exemple : Réalisation

Plus en détail

Département Informatique L3 Mention Informatique Jean-Michel Richer Architecture des Ordinateurs jean-michel.richer@univ-angers.

Département Informatique L3 Mention Informatique Jean-Michel Richer Architecture des Ordinateurs jean-michel.richer@univ-angers. Département Informatique L3 Mention Informatique Jean-Michel Richer Architecture des Ordinateurs jean-michel.richer@univ-angers.fr 2015/2016 Travaux Dirigés 1 Représentation de l information En informatique,

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

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

Désassemblage et détection de logiciels malveillants auto-modifiants

Désassemblage et détection de logiciels malveillants auto-modifiants École doctorale IAEM Lorraine Désassemblage et détection de logiciels malveillants auto-modifiants THÈSE présentée et soutenue publiquement le 23/02/205 pour l obtention du Doctorat de l Université de

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours (12x2h00) : rédéric Mallet - fmallet@unice.fr TP (12x2h00-2 groupes) : Jean-Pierre Lips - Jean-Pierre.LPS@unice.fr Christophe Delage Christophe.Delage@sophia.inria.fr

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

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

CHAPITRE 6 : Tableaux. Définition. Tableaux à une dimension (Vecteurs)

CHAPITRE 6 : Tableaux. Définition. Tableaux à une dimension (Vecteurs) Année Universitaire 2006/2007 CHAPITRE 6 : Tableaux Définition Tableaux à une dimension (Vecteurs) Déclaration ; Mémorisation M ; Tableaux à plusieurs dimensions Déclaration Tableaux à deux dimensions

Plus en détail

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155) Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155) F. Pellegrini Université Bordeaux 1 Ce document est copiable et distribuable librement et gratuitement à

Plus en détail

SSTIC 2009. Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

SSTIC 2009. Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques... Désobfuscation automatique de binaires Et autres idyles bucoliques... Alexandre Gazet Sogeti / ESEC R&D alexandre.gazet(at)sogeti.com Yoann Guillot Sogeti / ESEC R&D yoann.guillot(at)sogeti.com SSTIC 2009

Plus en détail

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

1 de 1. Algorithmique. Récursivité. Florent Hivert. Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert

1 de 1. Algorithmique. Récursivité. Florent Hivert. Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 1 de 1 Algorithmique Récursivité Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 1 Récursivité et Récurrence Deux notions très proche : mathématiques : récurrence

Plus en détail

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

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

Plus en détail

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

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

La rétroconception : application à l analyse logicielle

La rétroconception : application à l analyse logicielle La rétroconception : application à l analyse logicielle Serge Lefranc Centre d Électronique de l Armement Bruz cedex F-35174, France serge.lefranc@dga.defense.gouv.fr Résumé Cet article a pour but de présenter

Plus en détail

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION 145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu

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

Processus de compilation Préprocesseur Compilation Assemblage Edition de liens. ASR Période 2. Sylvain Jubertie. Département Informatique IUT Orléans

Processus de compilation Préprocesseur Compilation Assemblage Edition de liens. ASR Période 2. Sylvain Jubertie. Département Informatique IUT Orléans ASR Période 2 Sylvain Jubertie Département Informatique IUT Orléans 1 Processus de compilation 2 Préprocesseur 3 Compilation 4 Assemblage 5 Edition de liens Prérequis Prérequis langage C langage assembleur

Plus en détail

Chap I : Introduction à l Architecture des Ordinateurs

Chap I : Introduction à l Architecture des Ordinateurs Chap I : Introduction à l Architecture des Ordinateurs 1.1 Définitions Informatique = Information + Traitement Automatique Computer Science= Science de l ordinateur Un système informatique est une machine

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

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

Le langage Assembleur

Le langage Assembleur Université de Tunis El-Manar Faculté des Sciences de Tunis Département des Sciences de l Informatique Année Universitaire 2011/2012 Sections : IF3 Module : Systèmes d Exploitation Le langage Assembleur

Plus en détail

INITIATION A LA PROGRAMMATION EN C

INITIATION A LA PROGRAMMATION EN C INITIATION A LA PROGRAMMATION EN C OBJECTIF : ETRE CAPABLE DE CRÉER OU MODIFIER DE PETITS OUTILS DE TRAITEMENT D IMAGE Denis MARIANO-GOULART Service de médecine nucléaire. CHRU Lapeyronie. Montpellier.

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

Durand Guillaume 1997-1998 Année spéciale informatique REVERSE ENGINEERING

Durand Guillaume 1997-1998 Année spéciale informatique REVERSE ENGINEERING Durand Guillaume 1997-1998 Année spéciale informatique REVERSE ENGINEERING 2 REMERCIEMENTS Tous mes remerciements à Serge Rouveyrol qui m a donné le goût de la bidouille en assembleur. Remerciements également

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. 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

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

GESTION DES FICHIERS. Plan

GESTION DES FICHIERS. Plan Chapitre 10 GESTION DES FICHIERS Objectif: Connaître et manipuler les différentes primitives de gestion de fichier de niveau haut. Pré requis: Les fonction d'entrées sorties Les pointeurs Les structures

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

La vie des programmes

La vie des programmes La vie des programmes Fabienne Carrier Stéphane Devismes Université Joseph Fourier, Grenoble I 2 février 2009 Carrier, Devismes (Grenoble I) La vie des programmes 2 février 2009 1 / 31 Plan 1 Introduction

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

Structure en couches des systèmes informatiques

Structure en couches des systèmes informatiques Structure en couches des systèmes informatiques Vue simplifiée d un système informatique Ce que le simple utilisateur perçoit «à première vue» d un système informatique : Le boîtier (tour, desktop ou portable)

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs GTR 1999-2000 Emmanuel Viennet IUT de Villetaneuse Département GTR viennet@lipn.univ-paris13.fr Licence Copyright c 1995-2001 par Emmanuel Viennet. Ce document peut être librement

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

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

Cours 7 : fonctions recursives, arithmétique binaire, flottants 1

Cours 7 : fonctions recursives, arithmétique binaire, flottants 1 Cours 7 : fonctions recursives, arithmétique binaire, flottants 1 Les types énumérés On peut aussi définir des types qui ont un nombre fini de valeurs (ex: jours de la semaine, couleurs primaires, etc.)

Plus en détail

Shellcodes sous Linux dans les processeurs de 32 bits x86

Shellcodes sous Linux dans les processeurs de 32 bits x86 Shellcodes sous Linux dans les processeurs de 32 bits x86 بسم الله الرحمان الرحيم و الصلة و السلم على سيدنا محمد و آله و صحبه paper par: opt!x hacker(aidi youssef) optix@9.cn sommaire: 0x01:présentation

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

Création d'un binaire multiplateforme

Création d'un binaire multiplateforme Création d'un binaire multiplateforme Depuis quelques temps, nous voyons apparaître ça et là quelques virus multiplateformes. Nous citerons par exemple Winux, virus qui a pour cible les OS Linux et Windows...

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

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

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

UEO11 Cours/TDn 2 Algorithmique : bases - 2007-2008. 3- Algorithmique...1 3.1 Définition : algorithmique...1. Critère algorithmique élémentaire

UEO11 Cours/TDn 2 Algorithmique : bases - 2007-2008. 3- Algorithmique...1 3.1 Définition : algorithmique...1. Critère algorithmique élémentaire UEO11 Cours/TDn 2 Algorithmique : bases - 2007-2008 Table des matières 3- Algorithmique...1 3.1 Définition : algorithmique...1 Critère algorithmique élémentaire...1 3.2 De l algorithme au programme...2

Plus en détail

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

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

La Rétroconception Application à l analyse logicielle

La Rétroconception Application à l analyse logicielle La Rétroconception Application à l analyse logicielle Serge LEFRANC DGA/DCE/CELAR n 1 Introduction DGA/DCE/CELAR n 2 Introduction 1/2 La rétroconception peut se définir comme l action d extraire une connaissance

Plus en détail

Chap. I : Architecture de base d un ordinateur

Chap. I : Architecture de base d un ordinateur UMR 7030 - Université Paris 13 - Institut Galilée Cours Architecture et Système Dans cette partie, nous décrivons rapidement l architecture de base d un ordinateur et les principes de son fonctionnement.

Plus en détail

Compilation (INF 564)

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

Plus en détail

Conception de circuits numériques et architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique

Plus en détail