Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

Comprendre l'architecture des ordinateurs

Aller en bas

Comprendre l'architecture des ordinateurs Empty Comprendre l'architecture des ordinateurs

Message par Napoléon Dim 21 Déc - 14:17

Éléments d'architecture des ordinateurs :
travaux pratiques d'assembleur
sur PC Intelx86 sous Linux



Laboratoire d'Informatique fondamentale de Lille
Université des sciences et technologies de Lille
F-59655 Villeneuve d'Ascq CEDEX France



[Vous devez être inscrit et connecté pour voir ce lien]
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7654
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
Comprendre l'architecture des ordinateurs Left_bar_bleue999/1000Comprendre l'architecture des ordinateurs Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

Comprendre l'architecture des ordinateurs Empty Re: Comprendre l'architecture des ordinateurs

Message par Napoléon Dim 21 Déc - 14:18

Aperçu :

Ces notes constituent un support de travaux pratiques pour un cours d'architecture élémentaire des ordinateurs. Lors de ces séances, il s'agit principalement de programmation assembleur sur des ordinateurs personnels d'architecture intel 32 bits gérés par le système d'exploitation Linux. L'assembleur utilisé est le gnu assembleur et nous utiliserons le gnu debugger pour l'exécution pas à pas et l'examen de la mémoire et des registres.


Ce texte — comme son titre l'indique — vise deux objectifs :

* fournir une synthèse élémentaire des notions requises par un débutant pour l'apprentissage de l'assembleur ;
* donner une représentation architectonique1 du sujet.

Ainsi, ces notes ne prétendent ni à l'exhaustivité — toutes les instructions et possibilités de l'assembleur ne sont pas présentées — ni à apprendre à écrire du code optimal. Cet enseignement est plutôt orienté par la perspective d'en faire une base permettant de comprendre comment un programme — en C par exemple — est exécuté par la machine.


Un bref descriptif du jeu d'instruction des processeurs 32 bits de type intel est disponible en annexe D (pour plus d'information voir [2]). De plus, en utilisant la commande info as dans un interpréteur de commande, on accède au manuel d'utilisation de gas.
Conventions typographiques.
Dans ce document, nous utilisons les conventions suivantes :

* foo représente la commande foo dans un interpréteur de commandes ;
* foo représente la commande foo dans un environement — par exemple gdb ;
* foo représente une instruction assembleur.

Le guide d'utilisation de gas.
Ce document n'est pas un manuel présentant le gnu assembleur ; pour ce faire, nous suggérons l'utilisation du guide d'utilisation accessible depuis un interpréteur de commandes par l'instruction info gas.
Thème 1 Prise en main de l'assembleur gas
L'objectif de cette section est d'écrire, compiler et exécuter — sans trop de douleur — son premier programme assembleur.

* Descriptif sommaire de la famille des processeurs Intel iAPx86
* Registres généralistes de la famille des processeurs 32 bits Intel
* Exemple d'instruction assembleur : le mouvement de données
* Structure d'un programme assembleur
o Segment de données
o Segment de texte
* Compilation et exécution pas à pas
o Compilation
o Exécution pas à pas dans l'environnement gnu debugger
* Exercices

Thème 2 Structures de contrôle
Dans notre contexte, on appelle structure de contrôle toute séquence d'instructions qui permet de contrôler la succession des actions d'un programme. En ce qui concerne l'assembleur, il s'agit exclusivement de séquence d'instructions de sauts conditionnels.

* Organisation de la mémoire : segments et offsets
* Instruction de saut inconditionnelle jmp
* Instructions de saut conditionnelles
o Conditionnelles
o Boucles conditionnelles
o Instructions de boucle énumérative : loop
* Exercices

Thème 3 Appels systèmes par le biais d'interruptions

* Mécanisme d'interruption
* Interruptions et appels système du noyau Linux
* Gestion d'entrée-sortie
o Lecture et écriture
o Ouverture et fermeture d'un fichier

Thème 4 Transferts et stockage de données

* Transferts de données
o L'instruction mov
o Conversion de données
* Manipulation de la pile
o Implantation de la pile
o Manipulation de la pile

Thème 5 Appel de fonction et passage d'argument
Annexe A Index 1
Annexe B Architecture de type Intel 32 bits

* Les registres d'un processeur 32 bits de type Intel
o Le registre d'accumulation %eax
o Le registre %ebx (base index) utilisé comme pointeur sur les données
o Le registre ECX utilisé comme compteur
o Le registre EDX utilisé pour les entrées/sorties
o Le registre EIP (Instruction Pointer)
o Le registre EDI (Destination Index) et le registre ESI (Source Index)
o Le registre CS (Code Segment)
o Le registre SS (Stack Segment)
o Le registre ESP (Stack Pointer)
o Le registre EBP (Frame Base Pointer)
o Les registres DS, ES, FS, GS (Data Segment)
o Le registre EFLAG

Annexe C Descriptif des directives
Toutes les directives commencent par un point.

* Les directives indiquant une section
o .data : Segment de données
o .rodata : Segment de données en lecture seule
o .bss : Segment de stockage de données
o .text : Segment de code
* Indications sur la taille du codage
o .byte : Déclaration d'un nombre sur 1 octet
o .long : Déclaration d'un nombre sur 4 octets
o .zero : Réservation d'un nombre d'octets tous mis à 0
o .space : Réservation d'un nombre spécifié d'octets ayant une valeur donnée
o .word : Déclaration d'un nombre sur 2 octets
* Déclaration et porté des symboles
o .local : Déclaration locale d'une étiquette
o .global : Déclaration globale d'une étiquette
o .comm : Déclaration d'un symbol commun

Annexe D Descriptif des instructions
Pour chaque instruction, nous présentons :

* la syntaxe permettant l'utilisation des différentes dérivées de cette instruction ;
* une description de cette instruction ;
* l'effet de cette dernière sur le registre drapeaux (principalement pour les instructions relatives à l'unité arithmétique) ;
* les différents types d'opérandes possibles. Ainsi,
o idata représente une constante ;
o reg représente un registre ;
o mem représente une étiquette associée à un espace mémoire ou une adresse.

* Arithmétique classique
o add : addition d'entiers
o cmp : compare deux opérandes
o dec : décrémentation
o div : division d'entiers non signés
o inc : incrémentation
o mul : multiplication non signée
o sub : soustraction d'entiers
* Déplacement des données
o mov : déplacement de données
o pop : dépilement de données
o push : empilement de données
* Sauts
o jmp : saut inconditionnel
* Appel de fonction
o leave : Instruction précédent la fin d'une fonction en C
o call : Appel de fonction
* Misc
o lea : Load Effective Address

Annexe E Descriptif des appels système

* Entrée – sortie
o sys_read : Lecture depuis un flux
o sys_write : Écriture dans un flux
o sys_open : Ouverture d'un flux
o sys_close : Fermeture d'un flux
*
o sys_exit : Fin de processus

Annexe F Récapitulatif des commandes gdb

*
o Lancement et arrêt de gdb
o Commandes générales
o Manipulation des points d'arrêt
o Exécution d'un programme pas à pas
o Affichage du code et des données
o Commandes d'aide

Références

[1]
Intel Corporation. Intel Architecture Software Developer's Manual : Basis Architecture, 1997.

[2]
Intel Corporation. Intel Architecture Software Developer's Manual : Instruction Set Reference, 1997.

Pour tout commentaire : Alexandre Sedoglavic.
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7654
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
Comprendre l'architecture des ordinateurs Left_bar_bleue999/1000Comprendre l'architecture des ordinateurs Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum