Automne 2002 Martin Dubois Programmation système IFT-17584 Semaine 02 Retour sur la semaine 01 Les outils de développement logiciel Les outils que nous.

Slides:



Advertisements
Présentations similaires
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
Advertisements

GEF 243B Programmation informatique appliquée
Premier programme en C :
La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
Développement logiciel sur micro-contrôleurs PIC en C
Introduction au langage C
Les procédures et interruptions en Assembleur (Tasm)
C.
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Structures et unions types énumérés Qu'est-ce qu'une structure
Architecture de machines Principes généraux
Systèmes d’exploitation
Système d’exploitation : Assembleur
Principes de programmation (suite)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Algorithmique et Programmation
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Système d’exploitation : Assembleur
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Introduction à la programmation (Java)
Système d’exploitation : Assembleur
Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006.
Structures de données IFT-2000
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Web dynamique PhP + MySQL AYARI Mejdi 2006
8PRO100 Éléments de programmation Les types composés.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
Faculté Polytechnique de Mons
2.1 - Historique Chapitre 2 : Introduction au langage C++
Programmer en langage c
Programmation Système et Réseau (sous Linux)
Cours Architecture des Systèmes Informatiques
ALGORITHMIQUE ET PROGRAMMATION C
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Programmation Système et Réseau
Introduction au langage C Fonctions et Procédures
Les types composés Les enregistrements.
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
MOCK.
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
IFT313 – Introduction aux langages formels Eric Beaudry Département d’informatique Université de Sherbrooke Laboratoire sur JFLEX Été 2010.
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
S. Domas Système d’Exploitation Make et la construction d’exécutables 1ère annéeIUT Belfort-Montbéliard.
UE MAREP Cours 12 : Révisions
Patricia Renault UPMC 2005/2006
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
1 Algorithmique, cours 3 Septembre Les fonctions 1. Motivation 2. Définitions 3. Utilisation des fonctions 4. Déclaration des fonctions 5. Liens.
Scripts et fonctions Instructions de contrôle
IFT209 – Programmation Système
Tour rapide d’un premier programme SPARC v9
Philippe Gandy - 1 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Chapitre 3 L’accès aux données.
Langage de Programmation Orientée Objet : C++
CHAPITRE 10 Les sous-programmes 1. Sous-programme Suite d’instructions appelée de manière répétitive Par un programme Par plusieurs programmes distincts.
Visual Information Solutions IDL 7.0 Pour une utilisation optimale d’IDL.
Transcription de la présentation:

Automne 2002 Martin Dubois Programmation système IFT Semaine 02 Retour sur la semaine 01 Les outils de développement logiciel Les outils que nous utiliserons durant la première partie

Automne 2002 Martin Dubois Programmation système IFT 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

Automne 2002 Martin Dubois Programmation système IFT L’assembleur Entrées –Fichiers sources en langage assembleur –Fichiers de définition Sortie –Fichier objets Responsable de transformer le langage assembleur en langage machine (binaire)

Automne 2002 Martin Dubois Programmation système IFT L’éditeur de liens Entrés –Fichiers objets –Librairies (assemblage de fichiers objets) Sortie –Exécutable Responsable de trouver les dépendances entre modules objets et de créer les liens.

Automne 2002 Martin Dubois Programmation système IFT Les outils de développement logiciel

Automne 2002 Martin Dubois Programmation système IFT Notre monde Pentium 4 Première partie –Windows 2000 –Visual C++ –MASM Seconde partie –Linux –Outils GNU (GCC et GAS)

Automne 2002 Martin Dubois Programmation système IFT Visual C++ Éditeur Environnement de développement intégré Compilateur C (CL.EXE) Éditeur de liens (LINK.EXE) Dévermineur

Automne 2002 Martin Dubois Programmation système IFT 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

Automne 2002 Martin Dubois Programmation système IFT 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

Automne 2002 Martin Dubois Programmation système IFT 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

Automne 2002 Martin Dubois Programmation système IFT Utilités Pédagogiques Test rapide d’une ou de quelques instructions Autres Réaliser un traitement court faisant appel à des instructions spécialisés du processeurs

Automne 2002 Martin Dubois Programmation système IFT MASM32 Version décomercialisé de l’assembleur natif de MicroSoft Un éditeur conviviale à été ajouté : QEditor Site officiel : Très puissant – offre plus qu’un assembleur conventionnel

Automne 2002 Martin Dubois Programmation système IFT 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é !

Automne 2002 Martin Dubois Programmation système IFT Exemple model flat, stdcall option casemap:none include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib.code start: push 0 call ExitProcess end start

Automne 2002 Martin Dubois Programmation système IFT Utilisation MASM32 Assemblage Édition des liens Exécution Déverminage en utilisant Visual C++

Automne 2002 Martin Dubois Programmation système IFT Directive d’assemblage Obligatoire Définit le type de processeur Autres possibilités : En ajoutant un P à la fin nous gagnons le droit d’utiliser les instructions privilégiés.

Automne 2002 Martin Dubois Programmation système IFT 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

Automne 2002 Martin Dubois Programmation système IFT 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

Automne 2002 Martin Dubois Programmation système IFT 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++

Automne 2002 Martin Dubois Programmation système IFT 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.

Automne 2002 Martin Dubois Programmation système IFT 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.

Automne 2002 Martin Dubois Programmation système IFT Start: Symbole 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++

Automne 2002 Martin Dubois Programmation système IFT push 0 Instruction Placer la valeur 0 au sommet de la pile

Automne 2002 Martin Dubois Programmation système IFT call ExitProcess Instruction 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

Automne 2002 Martin Dubois Programmation système IFT 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

Automne 2002 Martin Dubois Programmation système IFT Ce qui nous manque encore Commentaires Définition de variables globales Définition de constantes

Automne 2002 Martin Dubois Programmation système IFT Les commentaires Tout ce qui suit un ; sur un ligne est considéré comme un commentaire ; Exemple02.asm ; //////////////////////////////////////////////////////////////////////////// ; IFT : Programmation systeme ; Martin Dubois - Automne 2002 ; 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

Automne 2002 Martin Dubois Programmation système IFT 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

Automne 2002 Martin Dubois Programmation système IFT Les variables globales.data; Variable initialises db0; un octets initialise à 0 db“Toto”, 0; une chaine de caractere termine dw100; un mot initialise à 0 dw1, 2, 3; un tableau de 3 mots initialises dd456789abh; un double mot initialise à 0x456789ab dd10 dup(0); un tableau de 10 double mots tous ; initialise à 0.data?; Variables non initialisees db?; un octets non initialise dw10 dup(?); un tableau de 10 mots non initialise

Automne 2002 Martin Dubois Programmation système IFT Les constantes.const DIX equ 10 Ressemble aux #define du langage C ZERO db0 CENT dw100 Ressemble aux variables déclarés en utilisant le mot const

Automne 2002 Martin Dubois Programmation système IFT D’autres directives align n –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

Automne 2002 Martin Dubois Programmation système IFT Et encore… high expression highword expression low expression lowword expression

Automne 2002 Martin Dubois Programmation système IFT 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

Automne 2002 Martin Dubois Programmation système IFT 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 !

Automne 2002 Martin Dubois Programmation système IFT Exemple 04 Programme principal généré par l’assistant de Visual C++ Module Fonction.asm

Automne 2002 Martin Dubois Programmation système IFT 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

Automne 2002 Martin Dubois Programmation système IFT Exemple04Dlg.cpp Déclaration de la fonction assembleur –Laissons croire au compilateur C++ que la fonction à été écrite en langage C extern “C” { voidFunction( void ) } Appel de la fonction assembleur –Difficile de faire plus simple Function()

Automne 2002 Martin Dubois Programmation système IFT 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.

Automne 2002 Martin Dubois Programmation système IFT Variable C utilisé en assembleur Déclaration extern “C” { char gDlg_Message[ 64 ]; } Utilisation extern gDlg_Message:

Automne 2002 Martin Dubois Programmation système IFT Variable assembleur utilisé en C Déclaration.data? public gFct_Titre gFct_Titre db 32 dub(?) Utilisation extern “C” { extern char gFct_Titre[ 32 ]; }

Automne 2002 Martin Dubois Programmation système IFT 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++ »