Syntaxe, directives assembleur

Documents pareils
Logiciel de base. Première année ENSIMAG

Structure d un programme

Programmation assembleur : aperçu

Architecture des ordinateurs


Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

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

Département informatique de l université d Angers

Rappels d architecture

CM2 L architecture MIPS32

Résumé Génération de code Le code intermédiaire

Les techniques de protection du logiciel

Algorithmique et Programmation, IMA

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

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

Initiation à la sécurité

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Java Licence Professionnelle CISII,

Compilation (INF 564)

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

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Conception de circuits numériques et architecture des ordinateurs

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

Traduction des Langages : Le Compilateur Micro Java

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

Utilisation d objets : String et ArrayList

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

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

as Architecture des Systèmes d Information

4. Initiation à l'assembleur

Débogage de code* Mardi 13 décembre Romaric DAVID Université de Strasbourg - Direction Informatique Pôle HPC. hpc.unistra.

UE Programmation Impérative Licence 2ème Année

Architecture des ordinateurs. Loïc Cuvillon. 20 novembre 2013

La Clé informatique. Formation Excel XP Aide-mémoire

AVERTISSEMENT. D'autre part, toute contrefaçon, plagiat, reproduction encourt une poursuite pénale. LIENS

Microprocesseur + Logiciel

TP1. Outils Java Eléments de correction

ANNEXE 8 : Le Mailing

Prentice Hall, 2011 (ISBN )

Publipostage avec Calc

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

GlobalScape Secure FTP Server Buffer Overflow

Les vulnérabilités du noyau. LECORNET Olivier LEGROS Bruno VIGIER Nicolas Promo 2005

Rappels sur les suites - Algorithme

Chap III : Les tableaux

Une introduction à Java

TP1 : Initiation à Java et Eclipse

Langage Java. Classe de première SI

ALGORITHMIQUE ET PROGRAMMATION En C

Préconisations Portail clients SIGMA

SGM. Master S.T.S. mention informatique, première année. Isabelle Puaut. Septembre Université de Rennes I - IRISA

Publipostage et étiquettes

Généralités sur le Langage Java et éléments syntaxiques.

Le publipostage avec Open Office

Plan du cours. Historique du langage Nouveautés de Java 7

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

Initiation à l algorithmique

PIC : COURS ASSEMBLEUR

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Introduction à l algorithmique et à la programmation M1102 CM n 3

Qu est-ce que l analyse des données qualitatives? TAMS Analyzer n est: Projets collaboratifs. TAMS Analyzer permet:

ERETES-SERIES. Support de formation. Formation ERETES ERETES-SERIE 1/58

2 Formation utilisateur

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Préparation à l examen EFA en Macro

Chapitre VI- La validation de la composition.

Java c est quoi? Java pourquoi?

Le langage C. Introduction, guide de reference

Algorithme. Table des matières

Initiation à la Programmation en Logique avec SISCtus Prolog

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

KM2 W1 EVC1 M3~ Manuel AUTOMSIM API 24V. BP Dcy 1MINI 1MAXI.

Théorie de la Programmation

TP 1. Prise en main du langage Python

EN BLANC AVANT IMPRESSION»»»

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

KoinKoin. Système d exploitation à architecture basée micro-noyau. Antoine Castaing Nicolas Clermont Damien Laniel

Réalisation d un OS 32 bits pour PC(x86)

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Introduction...6. Assembleur, philosophieet atouts...8. Avantages et inconvénients de l assembleur...9. Que programmer en Assembleur?.

Initiation à l informatique. Module 7 : Le courrier électronique ( , mail)

LES TYPES DE DONNÉES DU LANGAGE PASCAL

2015 kmeans. September 3, 2015

clavier espagnol Figure 1 - deux types de claviers AZERTY ou QWERTY

Les chaînes de caractères

Cours Informatique Master STEP

Déprotection semi-automatique de binaire

Formula Negator, Outil de négation de formule.

Désobfuscation automatique de binaire - The Barbarian Sublimation

Présentation du PL/SQL

HERVÉ SCHAUER CONSULTANTS Cabinet de Consultants en Sécurité Informatique depuis 1989 Spécialisé sur Unix, Windows, TCP/IP et Internet

ACTIVITÉ DE PROGRAMMATION

3. Caractéristiques et fonctions d une v.a.

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Site Internet de la Ville de Marssac. Comment ouvrir un compte et devenir contributeur PAGE 1

Transcription:

Syntaxe, directives assembleur 1

Exemples Instructions: iter: cmpw $0,%ax # compare word je fin # jump if equal shrw $1,%ax # shift right word jnc suite # jump if no carry add %dx,%ax # add suite: shlw $1,%dx # shift left word jmp iter # jump inconditionnel fin: Données : toto:.byte 0xff lulu:.int $5000, suite 2

Modèle mémoire (assembleur Gnu) Les directives.text,.data,.section.section.data un:.int 1..section.bss.lcomm tab,10 tab1: skip 10 ---.text main: pushl %ebp Code: text rodata Données Initialisées data Données non Initialisées BSS Pile 3

Programme source Ensemble de sections.data (.rodata,.bss) pour les données.text pour les instructions Chaque section est une suite de lignes Pour les instructions [etiquette:] code_op opérandes Pour les données [etiquette:] def_de_donnée suite de valeurs des commentaires des directives d assemblage 4

Représentation symbolique des instructions Code de l opération La dernière lettre correspond à la longueur des opérandes Exemple : shr, subl, movb Représentation symbolique des opérandes Registre. Ex: %eax Adresse en mémoire, dénotée par un mode d adressage Ex: 4(%ecx) Valeur immédiate Ex: $0x45ab Attention : les types d opérandes valides dépendent des instructions 5

Les commentaires Définition : il s agit de textes non interprétés par l assembleur et qui sont fournis par le programmeur pour augmenter la lisibilité de son programme. Comme en C (avec des fichiers *.S, S majuscule) : soit sur une ligne tout ce qui suit // jusqu à la fin de ligne soit ce qui est entre les deux couples de caractères /* et */ 6

Les étiquettes Une étiquette (identificateur suivi de «:») sert à désigner l adresse d un emplacement de mémoire On peut l utiliser dans un champ opérande toto: movw %eax,lulu 7

Étiquettes Déclaration d'étiquette : toto: <quelquechose> Ne génère pas de code Définie toto comme l'adresse de <quelquechose> Utilisation d'étiquette : movl toto, %eax L'étiquette est remplacée par sa valeur 8

Directives d assemblage Directives d'assemblage : commandes fournies par l assembleurs qui ne correspondent à aucune instruction du processeur. Elles permettent entre autres : La définition de données. La définition de constantes ou de symboles. Les sections (.text et.data) 9

Définition de données Définition de données initialisées [étiquette].<dname> val1,val2,, valn <DNAME> = byte hword long quad asciz xi:.long 0xaabbccdd, xi, -4500 xb:.byte 0x3f, 35, c message:.asciz "Hello World" Définition de données «non initialisées».lcomm nom, taille [étiquette].skip taille (,valeur) 10

Directives assembleur de définition de données 1.data 2 0000 DDCCBBAA xi:.long 0xaabbccdd, xi, -4500 2 00000000 2 6CEEFFFF 3 000c 3F2363 xb:.byte 0x3f, 35, 'c' 4 000f 48656C6C message:.string "Hello World" 4 6F20576F 4 726C6400 5.lcomm tab,10 6.text 7.globl main 8 0000 55 main: pushl %ebp 11

Définition de constantes Ressemblent au #define du langage C Symbole = expression associe de façon définitive la valeur d'expression au symbole défini par le champ symbole. X = 1024 movl $X, %eax // Strictement équivalent à «movl $1024, %eax» Remplacement syntaxique : on pourrait le faire avec «rechercher/remplacer» dans un éditeur de texte! (syntaxes alternatives : «.set x, y» ou «.equ x, y» ou encore «#define X Y») 12

Exportation de symbole Motivation : pouvoir définir (resp. utiliser) dans un module d assemblage du code et des données utilisables (resp. définis) dans un autre module d assemblage produit par un compilateur ou par un programmeur. Directive.globl (ou.global).globl <étiquette>, les étiquettes du champ opérande définies dans le module courant sont rendues visibles à l extérieur de ce module. Toute étiquette référencée dans le module courant sans y être définie est considérée comme externe, donc définie dans un autre module d assemblage. Exemple:.globl main // chaque programme comporte un // «main» appelé par le système 13

Mécanismes d adressage 14

Introduction (1) Exemples : movl $42, %eax movl toto, %ebx movl 2*(toto + %ebx), %eax Les opérandes des instructions ne peuvent pas être des expressions quelconques. Expressions autorisées comme opérandes = mode d'adressages 15

Modes d'adressages principaux du pentium Cf. EnsiWiki : http://ensiwiki.ensimag.fr/index.php/ldb_modes_d%27adressages 16