MIC-L - Cours de microprocesseurs et laboratoires
Appartient à l'UE Microprocesseurs et laboratoires
Personnes enseignantes
- Romain Absil (ABS)
- Jonas Beleho (BEJ)
- Amine Hallal (HAL)
- Moussa Wahid (MWA)
- Nicolas Vansteenkiste (NVS)
- Selim Rexhep (SRE)
- Yannick Voglaire (YVO)
Description générale du cours
Concept fondamentaux liés aux microprocesseurs : machine virtuelle, représentation des données, gestion des entrées / sorties, segmentation de la mémoire, mode réel et protégé, coprocesseur mathématique, étapes de démarrage d’un ordinateur, décodage du set d’instructions élémentaires d’un microprocesseur, x86
Matières de base utilisées
Cours de structure des ordinateurs, cours de système d’exploitation.
Objectifs
Permettre aux étudiants de comprendre le fonctionnement d’un microprocesseur et de se familiariser avec le set d’instructions assembleur afin de favoriser la compréhension des langages de haut niveau.
Acquis d’apprentissage
- Connaître le fonctionnement de base d’un processeur, au travers d’un modèle simplifié mettant en évidence les principes du calcul automatisé.
- Connaître les différences entre le mode réel et le mode protégé des processeurs Intel x86, en termes de gestion de la mémoire centrale et des instructions disponibles.
- Comprendre l’organisation de la mémoire centrale en mode réel sous Intel x86
- Connaître les principes d’encodage binaire du code-machine, et savoir traduire en binaire des instructions assembleur basiques (INC, MOV, ADD, …).
- Connaître les principes de fonctionnement du BIOS et son rôle dans le démarrage de l’ordinateur.
- Connaître le fonctionnement de base du co-processeur mathématique 8087, ainsi que certaines de ces instructions de base (FLD, FST, FADD, FMUL, …).
- Avoir une vue diachronique de l’évolution technologique des processeurs depuis le Intel 8086 (co-processeurs, pipeline, instructions SIMD, instructions SSE, multi-coeurs, …).
Plan du cours
Fonctionnement d’un microprocesseur
- Un ordinateur simplifié
- Composantes du processeur
- Déroulement d’un processus
- Interruption (pourquoi, comment ça fonctionne, sécurité, mode protégé)
- exemple de programme assembleur (compilation, exécution).
- Résumé avec GDB
Langage d’assemblage
- Qu’est-ce que l’assembleur ?
- Pourquoi utiliser l’assembleur
- Inconvénients de l’assembleur
- Pourquoi connaître l’assembleur
- Les assembleurs
- Déboguer un programme assembleur
Les modes du x86
- mode protégé
- mode réel
- segmentation en mode protégé
- segmentation en mode réel
- exemple de programme en mode réel
- la table des interruptions et son emplacement)
Cartographie de la RAM d’un PC en mode réel
- accès à la ROM
- accès à la RAM
- accès aux périphériques
- exemples d’accès à un périphérique
- cartographie de la mémoire en mode réel
- affichage en mode réel
Démarrage d’un ordinateur
- À la mise sous tension
- BIOS
- Secteur de boot d’une disquette, d’un disque (ou USB)
- Un premier process sans interruption du BIOS
Jeu d’instruction du x86
- Structure d’un code machine x86
- Code machine x86 : code des registres
- Visualiser le code machine
- Code machine sur un byte fixe
- Code machine avec valeur immédiate
- Instructions simples
- ModR/M en 32 bits
- Byte SIB
- Préfixes de segmentation
- Préfixes de répétition
- Préfixes de taille
- Exemples
Coprocesseur mathématique
- Rôle
- Historique
- Architecture et représentation des nombres
- Valeurs extrêmes
- Pile du coprocesseur
- Jeu d’instruction
- Exemples
Évolution des microprocesseurs
- Historique
- Loi de Moore
- Co-processeurs
- Processeurs pipe-line
- Classement SISD, SIMD
- Jeu d’instruction MMX 3DNow!
- Jeu d’instruction SSE
- Processeurs 64 bits
- Processeurs dual core
Bibliographie
- Assembleur X86 (Livre)
- Kip Irvine, Assembleur X86, CampusPress (ISBN: 2-7440-1534-2)
- Assembleur X86 (Livre)
- Jean-Bernard Emond, Assembleur X86, Des bases de la programmation jusqu’à l’interfaçage avec les langages de haut niveau, CampusPress (ISBN: 2-7440-1564-4)
Description générale du cours
Etude du fonctionnement des microprocesseurs - Etude du 8086.
instructions élémentaires, notions de pile et de variables locales,
Programmation élémentaire en assembleur sous LINUX.
Matières de base utilisées
Néant.
Objectifs
Permettre aux étudiants de comprendre le fonctionnement d’un microprocesseur et de se familiariser avec les outils de travail : assembleur, éditeur de liens, debugger. Les laboratoires sont réalisés dans un environnement Unix.
Acquis d’apprentissage
- Connaître la syntaxe de l’assembleur NASM pour le processeur Intel 80386, en termes de déclaration de variables et tableaux, structures de contrôle de base (tests, sauts conditionnels, appels de modules), opérateurs logique (AND, OR, XOR, NOT), opérateurs arithmétiques (ADD, SUB, INC, DEC).
- Savoir implémenter des algorithmes de base en assembleur (traitements de chaînes de caractères et les tableaux, traitements simples sur les fichiers, …).
- Savoir implémenter quelques appels-système LINUX basiques en assembleur (open, read, write, close, exit, …).
- Savoir implémenter un programme assembleur divisé en modules répartis sur plusieurs fichiers.
Plan du cours
Prise en main de l’environnement
- Description des registres du microprocesseur 32 bits de la famille x86
- Structure d’un programme assembleur
- Constante entière, directive, commentaire et étiquette
- Assemblage, édition des liens, exécution
- Utilisation d’un outil de “debuggage”
Instructions logiques et de manipulation de bits
- Le registre eflags
- Instructions logiques not, and, or et xor
- Instructions de manipulation de bits sal et sar
Instructions arithmétiques
- Représentation binaire par position simple
- Représentation en complément à deux
- Recopie en extension de signe
- Instructions arithmétiques add, inc, sub et dec
Les instructions de saut jf
- Le label
- Saut inconditionnel : jmp (jump)
- Saut conditionnel jf
- Illustration aux structures de contrôle si-sinon et tant que
Les instructions de saut jcc
- Instruction de comparaison cmp
- Saut conditionnel jcc
- Illustration aux la structures de contrôle pour et répéter-tant que
Variables globales
- notion de variable simple
- Comprendre et utiliser les segments
- Déclaration, initialisation et utilisation de variables mémoires
- Intérêt des directives de taille
- Manipulation de tableaux
- Big endian vs Little endian
Les interruptions et les appels système
- Mécanisme des interruptions matérielles pour un processeur x86 en mode protégé
- Appels systèmes par le biais d’interruptions
- L’appel système exit, chmod et write
La pile du processeur x86
- Les registres de la pile
- Instructions push, pop
- Manipulation de la pile
- Variable locales
- Labels locaux
La procédure
- Intérêt des procédures
- Appel de procédure
- Passage d’argument
- Retour d’une procédure
Bibliographie
- Travaux et documents d’aide (E.S.I.) plateforme poESI
- Daniel Tabak, Advanced microprocessors, Mc Hill Inc (1995)