MICL - Laboratoire de microprocesseur

Appartient à l'UE Systèmes d'exploitation I

Personnes enseignantes

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)