Previous Up Next

B.1  Les registres d'un processeur 32 bits de type Intel

Pour plus d'information sur ce sujet, nous renvoyons au manuel [1]. Un processeur 32 bits de type Intel dispose de 16 registres qui sont classables en trois catégories :

Le registre d'accumulation %eax

Ce registre généraliste peut contenir les données des utilisateurs.


Remarque 11.  Ce registre joue le rôle d'opérande implicite dans de nombreuses opérations : mul, div, etc. Dans ce cas le résultat de l'opération est stocké dans ce même registre.


Le registre %ebx (base index) utilisé comme pointeur sur les données

Usuellement, ce registre contient un offset relatif au segment de données permettant de repérer une information de ce segment.

Le registre ECX utilisé comme compteur

Ce registre est utilisé pour les boucles et les opérations sur les chaînes de caractères.

Le registre EDX utilisé pour les entrées/sorties

Ce registre est généralement utilisé pour contenir des offsets lors des opérations d'affichage ou de saisie par exemple.

Le registre EIP (Instruction Pointer)

Le registre EIP contient l'offset de la prochaîne instruction à exécuter. Il est modifié automatique à chaque exécution et peut être manipulé par des instruction du type jmp, call, ret, etc. On ne peut pas accéder directement à ce registre.

Le registre EDI (Destination Index) et le registre ESI (Source Index)

Ces registres sont utilisés lors des opérations sur les manipulations — copie, etc. — de suites d'octets.

Le registre CS (Code Segment)

Ce registre 16 bits contient le numéro du segment mémoire dans lequel sont stockées les instructions assembleur du code à exécuter. On ne peut pas accéder directement à ce registre.

Le registre SS (Stack Segment)

Ce registre 16 bits contient le numéro du segment mémoire dans lequel est stockée la pile. On peut accéder directement à ce registre ce qui permet d'utiliser plusieurs piles.

Le registre ESP (Stack Pointer)

Ce registre 32 bits contient le déplacement pour atteindre le sommet de la pile. La partie basse 16 bits de ce registre peut être utilisée comme le registre SP.

Le registre EBP (Frame Base Pointer)

Ce registre 32 bits contient un déplacement correspondant à une position dans la pile. Ce registre sert à pointer sur une donnée dans la pile. La partie basse 16 bits de ce registre peut être utilisée comme le registre BP.

Les registres DS, ES, FS, GS (Data Segment)

Ces registres 16 bits contiennent les numéros de segment mémoire dans lesquels sont stockées des données. Le registre DS est utilisé pour le segment de données du code ; les autres permettent de référencer d'autres types de données. On ne peut pas accéder directement à ce registre.

Le registre EFLAG

Ce registre est structuré comme suit :
EFLAG
31   16 15   0
        FLAG  
Les bits 1, 3, 5, 15 et les bits de 22 à 31 sont réservés par le microprocesseur pour son fonctionnement interne. Les 21 autres bits forment des drapeaux i.e. des indicateurs et nous ne nous intéresserons qu'au sous registre FLAG. Il existe quatre actions possibles d'une instruction sur les drapeaux : Les fonctions des drapeaux sont résumées dans le tableau ci-dessus :
21 ID Identification Flag  
20 VIP Virtual Interrupt Pending  
19 VIF Virtual Interrupt Flag  
18 AC Alignment check  
17 VM Virtual 8086 Mode  
16 RF Resume Flag  
14 NT Nested Task Mis à 1 lorsque la tâche courante est associée à la tâche précédente, 0 sinon.
12 & 13 IOPL I/O Privilege Level Contient un nombre qui indique le niveau de privilège du programme en cours d'exécution
11 OF Overflow Flag Mis à 1 si une opération provoque un dépassement de capacité
10 DF Direction Flag Fixe le sens dans lequel seront effectuées les opérations de traitement de chaînes de caractères. STD le met à 1, CLD à 0.
9 IF Interrupt Enable Flag Mis à 1, il autorise les interruptions. S'il vaut 0, il les empêche.
8 TF Trap Flag Mis à 1, il force le processeur à fonctionner pas à pas.
7 SF Sign Flag Prend la valeur du bit de poids fort de l'accumulateur après un calcul.
6 ZF Zero Flag Mis à 1 si le résultat d'un calcul (i.e. le contenu de l'accumulateur) vaut 0.
4 AF Auxiliary Carry Flag Mis à 1 si un calcul en BCD non compacté produit une retenue.
2 PF Parity Flag Mis à 1 si les 4 bits de poids faible du résultat contiennent un nombre pair de 1.
0 CF Carry Flag Mis à 1 si un calcul produit une retenue.





Pour tout commentaire : Alexandre Sedoglavic.
Previous Up Next