Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parBasile Paris Modifié depuis plus de 8 années
1
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 utiliserons durant la première partie
2
Automne 2002 Martin Dubois Programmation système IFT-17584 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
3
Automne 2002 Martin Dubois Programmation système IFT-17584 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)
4
Automne 2002 Martin Dubois Programmation système IFT-17584 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.
5
Automne 2002 Martin Dubois Programmation système IFT-17584 Les outils de développement logiciel
6
Automne 2002 Martin Dubois Programmation système IFT-17584 Notre monde Pentium 4 Première partie –Windows 2000 –Visual C++ –MASM Seconde partie –Linux –Outils GNU (GCC et GAS)
7
Automne 2002 Martin Dubois Programmation système IFT-17584 Visual C++ Éditeur Environnement de développement intégré Compilateur C (CL.EXE) Éditeur de liens (LINK.EXE) Dévermineur
8
Automne 2002 Martin Dubois Programmation système IFT-17584 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
9
Automne 2002 Martin Dubois Programmation système IFT-17584 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
10
Automne 2002 Martin Dubois Programmation système IFT-17584 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
11
Automne 2002 Martin Dubois Programmation système IFT-17584 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
12
Automne 2002 Martin Dubois Programmation système IFT-17584 MASM32 Version décomercialisé de l’assembleur natif de MicroSoft Un éditeur conviviale à été ajouté : QEditor Site officiel : www.masm32.comwww.masm32.com Très puissant – offre plus qu’un assembleur conventionnel
13
Automne 2002 Martin Dubois Programmation système IFT-17584 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é !
14
Automne 2002 Martin Dubois Programmation système IFT-17584 Exemple 01.686.model flat, stdcall option casemap:none include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib.code start: push 0 call ExitProcess end start
15
Automne 2002 Martin Dubois Programmation système IFT-17584 Utilisation MASM32 Assemblage Édition des liens Exécution Déverminage en utilisant Visual C++
16
Automne 2002 Martin Dubois Programmation système IFT-17584.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.
17
Automne 2002 Martin Dubois Programmation système IFT-17584.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
18
Automne 2002 Martin Dubois Programmation système IFT-17584 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
19
Automne 2002 Martin Dubois Programmation système IFT-17584 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++
20
Automne 2002 Martin Dubois Programmation système IFT-17584 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.
21
Automne 2002 Martin Dubois Programmation système IFT-17584.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.
22
Automne 2002 Martin Dubois Programmation système IFT-17584 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++
23
Automne 2002 Martin Dubois Programmation système IFT-17584 push 0 Instruction Placer la valeur 0 au sommet de la pile
24
Automne 2002 Martin Dubois Programmation système IFT-17584 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
25
Automne 2002 Martin Dubois Programmation système IFT-17584 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
26
Automne 2002 Martin Dubois Programmation système IFT-17584 Ce qui nous manque encore Commentaires Définition de variables globales Définition de constantes
27
Automne 2002 Martin Dubois Programmation système IFT-17584 Les commentaires Tout ce qui suit un ; sur un ligne est considéré comme un commentaire ; Exemple02.asm ; //////////////////////////////////////////////////////////////////////////// ; IFT-17584 : 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
28
Automne 2002 Martin Dubois Programmation système IFT-17584 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
29
Automne 2002 Martin Dubois Programmation système IFT-17584 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
30
Automne 2002 Martin Dubois Programmation système IFT-17584 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
31
Automne 2002 Martin Dubois Programmation système IFT-17584 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
32
Automne 2002 Martin Dubois Programmation système IFT-17584 Et encore… high expression highword expression low expression lowword expression
33
Automne 2002 Martin Dubois Programmation système IFT-17584 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
34
Automne 2002 Martin Dubois Programmation système IFT-17584 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 !
35
Automne 2002 Martin Dubois Programmation système IFT-17584 Exemple 04 Programme principal généré par l’assistant de Visual C++ Module Fonction.asm
36
Automne 2002 Martin Dubois Programmation système IFT-17584 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
37
Automne 2002 Martin Dubois Programmation système IFT-17584 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()
38
Automne 2002 Martin Dubois Programmation système IFT-17584 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.
39
Automne 2002 Martin Dubois Programmation système IFT-17584 Variable C utilisé en assembleur Déclaration extern “C” { char gDlg_Message[ 64 ]; } Utilisation extern gDlg_Message:
40
Automne 2002 Martin Dubois Programmation système IFT-17584 Variable assembleur utilisé en C Déclaration.data? public gFct_Titre gFct_Titre db 32 dub(?) Utilisation extern “C” { extern char gFct_Titre[ 32 ]; }
41
Automne 2002 Martin Dubois Programmation système IFT-17584 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++ »
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.