Semaine 02. Retour sur la semaine 01 Les outils de développement logiciel Les outils que nous utiliserons durant la première partie

Documents pareils
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Structure d un programme

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Procédure d installation de mexi backup

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

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

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

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

Algorithmique et Programmation, IMA

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

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

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Compilation (INF 564)

Module.NET 3 Les Assemblys.NET

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Installation / Sauvegarde Restauration / Mise à jour

TP1 : Initiation à Java et Eclipse

Conventions d écriture et outils de mise au point

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Chap III : Les tableaux

Le langage C. Séance n 4

Programmation assembleur : aperçu

Chapitre 5 : Les procédures stockées PL/SQL

Programmation système I Les entrées/sorties

Architecture des ordinateurs

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

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Les chaînes de caractères

1. Structure d'un programme FORTRAN 95

Guide rapide IDEP. Helpdesk

Introduction au langage C

Manuel du logiciel PrestaTest.

Outils pour les réseaux de neurones et contenu du CD-Rom

Le langage C. Introduction, guide de reference

Compression de Données - Algorithme de Huffman Document de Conception

Initiation à la sécurité

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Chapitre I Notions de base et outils de travail

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Cours 1: Java et les objets

ésylog, direction technique Esylog_PeerBackup outil de sauvegarde individuelle mails & fichiers personnels documentation technique

Rappels d architecture

Le prototype de la fonction main()

Architecture des ordinateurs

LES FONCTIONS DE SURVEILLANCE DES FICHIERS

Documentation d information technique spécifique Education. PGI Open Line PRO


Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Systeme d'exploitation

OS Réseaux et Programmation Système - C5

GESTION DES FICHIERS C/UNIX

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

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

TP1 - Prise en main de l environnement Unix.

Programmation impérative

TP1 : Initiation à Java et Eclipse

Environnements de développement (intégrés)

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

IV- Comment fonctionne un ordinateur?

Introduction à la Programmation Parallèle: MPI

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

< Atelier 1 /> Démarrer une application web

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Utilisation d objets : String et ArrayList

Présentation du PL/SQL

Quelques éléments de compilation en C et makefiles

Créer le schéma relationnel d une base de données ACCESS

Cours Langage C/C++ Programmation modulaire

Informatique. Les réponses doivent être données en cochant les cases sur la dernière feuille du sujet, intitulée feuille de réponse

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

NatStar V8.00. Ce document présente la liste des nouvelles fonctionnalités de la 8.00, disponible à partir de septembre 2013.

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

TD3: tableaux avancées, première classe et chaînes

Évaluation et implémentation des langages

Structure du format BMP, sa lecture, sa construction et son écriture

Méthodologie de la programmation

Connexion à SQL server

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

Introduction à l informatique en BCPST

Cours d Algorithmique et de Langage C v 3.0

Gestion de gros fichiers binaires (images) en APL*PLUS III

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

EMC DATA DOMAIN OPERATING SYSTEM

Gestion des sauvegardes

Gestion mémoire et Représentation intermédiaire

Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza

La création d un paquet Debian. Aurélien Jarno. Journées du Logiciel Libre. 15 octobre 2005

I00 Éléments d architecture

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

PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH

Travaux Dirigés n 1 : chaînes de caractères

Auditer une infrastructure Microsoft

Initiation. àl algorithmique et à la programmation. en C

Transcription:

Semaine 02 Retour sur la semaine 01 Les outils de développement logiciel Les outils que nous utiliserons durant la première partie

Retour sur la semaine 01 Plan de cours Raisons de l apprentissage de l assembleur Architecture des processeurs modernes Architecture CISC vs RISC Architecture du Pentium 4

Entrées L assembleur Fichiers sources en langage assembleur Fichiers de définition Sortie Fichier objets Responsable de transformer le langage assembleur en langage machine (binaire)

Entrés Fichiers objets L éditeur de liens Librairies (assemblage de fichiers objets) Sortie Exécutable Responsable de trouver les dépendances entre modules objets et de créer les liens.

Les outils de développement logiciel

Pentium 4 Première partie Windows 2000 Visual C++ MASM Seconde partie Notre monde Linux Outils GNU (GCC et GAS)

Visual C++ Éditeur Environnement de développement intégré Compilateur C (CL.EXE) Éditeur de liens (LINK.EXE) Dévermineur

Les Listing Files Configuration du compilateur pour la génération Utilités de ces fichiers Apprentissage de l assembleur Déverminage de l assembleur «inline» Base d optimisation Génération des squelette de fonctions Utilités historiques

L assembleur Inline Avantages Simplicité Partage simple des variables du programme C Aucune préoccupation à propos de l organisation de la mémoire Aucune préoccupation à propos du passage des arguments Aucune préoccupation de l initialisation des librairies systèmes

Les désavantages Aucun contrôle sur l organisation de la mémoire Aucun contrôle sur les méthodes utilisées pour accéder aux variables

Pédagogiques Utilités Test rapide d une ou de quelques instructions Autres Réaliser un traitement court faisant appel à des instructions spécialisés du processeurs

MASM32 Version décomercialisé de l assembleur natif de MicroSoft Un éditeur conviviale à été ajouté : QEditor Site officiel : www.masm32.com Très puissant offre plus qu un assembleur conventionnel

Installation de MASM32 Téléchargez le fichier compresser directement du site du cours (\Outils\masmET.zip) Décompressez le de manière à ce que le répertoire masm32 soit à la racine du disque qui contiendra aussi vos programmes assembleur C est terminé!

Exemple 01 start:.686.model flat, stdcall option casemap:none include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib.code push 0 call ExitProcess end start

Utilisation MASM32 Assemblage Édition des liens Exécution Déverminage en utilisant Visual C++

.686 Directive d assemblage Obligatoire Définit le type de processeur Autres possibilités :.386.486.586 En ajoutant un P à la fin nous gagnons le droit d utiliser les instructions privilégiés.

.model flat, stdcall Directive d assemblage Obligatoire Indique que nous utiliserons un seul segment de 4 GB Indique aussi que la convention d appel des fonction sera celle du langage C standard

option casemap:none Directive d assemblage Indique que la différence entre majuscule et minuscule est importante Autres choix: all, notpublic Nécessaire pour l interaction avec les langages tel que le C

include \masm32\include\kernel32.inc include est la directive d assemblage permettant d inclure un autre fichier source. \masm32\include\kernel32.inc et le nom du fichier déclarant les fonctions de la librairie Kernel32 Cette directive ressemble en tous points à la directive #include des langages C et C++

includelib \masm32\lib\kernel32.lib includelib est la directive d assemblage qui indique qu une librairie devra être lié avec le fichier assembleur \masm32\lib\kernel32.lib est le nom de la librairie Cette information n est pas directement utilisé par l assembleur. Elle est simplement transmise à l éditeur de liens.

.code Directive de compilation Les instructions qui suivent doivent être placés dans la section réservée aux instructions exécutables Cette section peut toujours être lu et exécuté Plusieurs systèmes d exploitation ne permette pas l écriture dans cette section.

Symbole Start: Ce symbole est reconnu par l éditeur de liens comme étant le point d entrée du programme Il remplace le main des langages C / C++

Instruction push 0 Placer la valeur 0 au sommet de la pile

Instruction call ExitProcess Transférer le contrôle à la fonction ExitProcess Habituellement l exécution se continue à l instruction suivante quand la fonction appelée rend le contrôle La fonction ExitProcess à cependant la particularité de ne pas rendre le contrôle

end start Directive d assemblage Indique la fin d un fichier source Le symbole, si présent indique ou l exécution du programme doit débuter

Ce qui nous manque encore Commentaires Définition de variables globales Définition de constantes

Les commentaires Tout ce qui suit un ; sur un ligne est considéré comme un commentaire ; Exemple02.asm ; //////////////////////////////////////////////////////////////////////////// ; : Programmation systeme ; - ; Option de compilation ; ////////////////////////////////////////////////////////////////////////////.686 ; Type de processeur = P4.model flat, stdcall ; Un seul segment de 4 GB option casemap:none ; Tenir compte des majuscule-minuscule

Les commentaires (la suite) ; Includes ; //////////////////////////////////////////////////////////////////////////// include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib ; Debut du segment de code ; ////////////////////////////////////////////////////////////////////////////.code ; ===== Start ================================================================ ; Le point d'entree du programme start: push 0 ; Nous desirons que le code retourne par le programme soit 0 call ExitProcess end start

Les variables globales.data ; Variable initialises db 0 ; un octets initialise à 0 db Toto, 0 ; une chaine de caractere termine dw 100 ; un mot initialise à 0 dw 1, 2, 3 dd 456789abh dd 10 dup(0).data? ; Variables non initialisees db? dw 10 dup(?) ; un tableau de 3 mots initialises ; un double mot initialise à 0x456789ab ; un tableau de 10 double mots tous ; initialise à 0 ; un octets non initialise ; un tableau de 10 mots non initialise

Les constantes.const DIX equ 10 Ressemble aux #define du langage C ZERO db 0 CENT dw 100 Ressemble aux variables déclarés en utilisant le mot const

align n D autres directives Force un symbole à être aligné sur une adresse multiple d une puissance de 2 donnée extern symbol Indique qu un symbole est définit dans un autre module et utilisé dans celui-ci public symbol Indique qu un symbole définit dans ce module est aussi utilisé par un ou plusieurs autre modules

Et encore high expression highword expression low expression lowword expression

Un programme tout en assembleur Avantages Parfait contrôle sur tout Espace utilisé et vitesse d exécution optimale Désavantages Responsable de tout (initialisation, terminaison, gestion de la mémoire) Utilisation des librairies standards plus complexe

Le meilleur des deux mondes Ce qui serait bien c est écrire l ensemble du programme en langage de haut niveau écrire les routines ou modules critiques en assembleur Bonne nouvelle, c est possible!

Exemple 04 Programme principal généré par l assistant de Visual C++ Module Fonction.asm

Fonction.asm Remarquez plus de directive includelib plus de symbole dans la directive end la nouvelle directive public Fonction le remplacement de l appel de ExitProcess par l instruction ret Kernel32.inc n est plus inclue

Exemple04Dlg.cpp Déclaration de la fonction assembleur Laissons croire au compilateur C++ que la fonction à été écrite en langage C extern C { } void Function( void ) Appel de la fonction assembleur Difficile de faire plus simple Function()

Et le partage des données alors? Il est facile de partager des variables globales C est ce qui est fait dans l exemple 05 Nous apprendrons, plus tard dans ce cours, comment passer des arguments lors d un appel assembleur C ou C assembleur.

Variable C utilisé en assembleur Déclaration extern C { } char gdlg_message[ 64 ]; Utilisation extern gdlg_message:

Variable assembleur utilisé en C Déclaration.data? public gfct_titre gfct_titre db 32 dub(?) Utilisation extern C { extern char gfct_titre[ 32 ]; }

Petits trucs Simplifiez vous la tâche, n utilisez qu une seule des deux méthodes dans un même programme Personnellement je préfère déclarer mes variables du cote «C / C++»