← Retour aux flashcardsQuick Flashcards

Assembly Course – X86 Architecture Flashcards

Cours complet sur l'architecture x86, ses modes, registres et instructions essentielles pour comprendre le processeur depuis 1978 jusqu'au mode 64 bits.

32 cartes~11 min
Assembly Course – X86 Architecture Flashcards — Qwi
1 / 32

Toutes les flashcards de ce jeu

1Qu'est‑ce qu'un processeur ?
Réponse

Un circuit qui exécute les instructions

Il lit, décode, exécute les opérations et gère les I/O.
2Les composants principaux d'un CPU incluent la {{ALU}}.
Réponse

ALU

3Les registres font partie des composants d'un processeur.
Réponse

Vrai

Les registres stockent les données internes du CPU.
4Quelle différence principale entre RISC et CISC ?
Réponse

RISC → jeu d'instructions réduit | CISC → jeu d'instructions complet

5En quelle année le CPU x86 a‑t‑il été créé ?
Réponse

1978

6Le premier x86 était une architecture {{16 bits}}.
Réponse

16 bits

7Le registre AX fait partie des registres 32 bits du x86.
Réponse

Faux

AX est un registre de 16 bits.
8Quelle année le x86 est‑passé à 32 bits ?
Réponse

1985

9Quelle différence entre AX et EAX ?
Réponse

AX → 16 bits | EAX → 32 bits

10Quand le x86 a‑t‑il introduit le mode 64 bits ?
Réponse

2003

11Le registre 64 bits principal pour l'accumulateur est le {{RAX}}.
Réponse

RAX

12Le registre RIP est le compteur d'instructions en mode 64 bits.
Réponse

Vrai

RIP remplace EIP en mode long.
13Le x86 garantit‑il la compatibilité descendante ?
Réponse

Oui

14Un programme x86 de 1978 ne fonctionne pas sur un processeur 2023.
Réponse

Faux

La compatibilité descendante permet son exécution.
15Le mode {{Real}} est le mode de démarrage du x86.
Réponse

Real

16Différence entre Real mode et Protected mode ?
Réponse

Real → 1 MiB, 16 bits | Protected → jusqu’à 1 GiB, protection mémoire

17Comment le code machine peut‑il être affiché ?
Réponse

En hexadécimal

18Un octet de code machine peut être écrit en {{hexadécimal}} (ex. 0xAA).
Réponse

hexadécimal

19Les registres x86 sont nombreux, plus de 100.
Réponse

Faux

Ils sont peu nombreux mais très rapides.
20Quel registre x86 agit comme compteur d'instructions ?
Réponse

EIP

21Quel registre est utilisé comme pointeur de pile ?
Réponse

ESP | RSP (selon mode)

22Si EAX = 0xDEADBEEF, alors {{AX}} = 0xBEEF.
Réponse

AX

23Dans cet exemple, AH contient 0xEF.
Réponse

Faux

AH contient 0xBE.
24Dans l'instruction 'mov eax, 0x14', quel est l'opérande source ?
Réponse

0x14

25Dans 'mov ax, bx', le registre {{bx}} est l'opérande source.
Réponse

bx

26L'instruction MOV modifie le registre source.
Réponse

Faux

Seul le registre destination est modifié.
27L'instruction 'add 0x14, ebx' est valide.
Réponse

Faux

Le premier opérande doit être un registre.
28L'instruction 'add al, bl' ajoute {{bl}} à al.
Réponse

bl

29Quel registre reçoit le produit de MUL ?
Réponse

EDX:EAX

30Après DIV, où se trouve le quotient et le reste ?
Réponse

Quotient → EAX | Reste → EDX

31L'instruction {{NOT}} inverse tous les bits du registre.
Réponse

NOT

32L'opération OR utilise le symbole |.
Réponse

Vrai

OR est représenté par le symbole "|".

Introduction à l'architecture x86

L'architecture x86 est l'une des plus répandues dans le monde des ordinateurs personnels. Elle a été créée en 1978 et a évolué de 16 bits à 64 bits, tout en conservant une compatibilité descendante remarquable.

Les composants fondamentaux du processeur

Un processeur, ou CPU, est un circuit qui lit, décode, exécute les opérations et gère les entrées/sorties. Parmi ses composants principaux figurent l'ALU (unité arithmétique et logique) et les registres, qui stockent les données internes du CPU.

Registres et leurs tailles

Les registres sont classés selon la largeur de leurs mots :

  • AX – registre de 16 bits (première génération).
  • EAX – registre de 32 bits, extension d'AX.
  • RAX – registre de 64 bits, équivalent d'EAX en mode long.
  • RIP – compteur d'instructions en mode 64 bits, remplaçant EIP en mode protégé.
  • ESP / RSP – pointeur de pile, dépend du mode d'adressage.
  • EIP – compteur d'instructions en mode 32 bits.

Contrairement à une idée répandue, le jeu de registres x86 ne compte pas plus de 100 registres ; il est peu nombreux mais très rapide.

Évolution historique

Les jalons majeurs de l'architecture x86 sont :

  1. 1978 – création du premier processeur x86, architecture 16 bits.
  2. 1985 – passage à 32 bits.
  3. 2003 – introduction du mode 64 bits.

Cette progression a permis d'augmenter la capacité d'adressage mémoire, passant de 1 MiB en Real mode à jusqu’à 1 GiB en Protected mode, puis bien au‑delà en mode long.

Modes d'exécution

Le processeur x86 démarre en Real mode, un mode de 16 bits limité à 1 MiB de mémoire et sans protection. Le Protected mode offre une protection mémoire et un espace d'adressage étendu (jusqu’à 1 GiB). En 64 bits, le Long mode utilise le registre RIP comme compteur d'instructions.

Compatibilité descendante

Une des forces majeures du x86 est sa compatibilité descendante. Un programme écrit en 1978 fonctionne toujours sur un processeur moderne de 2023, grâce à la continuité de l'ensemble d'instructions.

Instructions de base et opérandes

Les instructions x86 manipulent des opérandes qui peuvent être des registres, des constantes ou des adresses mémoire. Voici quelques exemples illustratifs :

  • mov eax, 0x14 – l'opérande source est 0x14.
  • mov ax, bx – bx est l'opérande source.
  • add al, bl – ajoute le contenu de bl à al.

Il est important de retenir que l'instruction MOV ne modifie jamais le registre source, et que l'opérande de gauche doit toujours être un registre lorsqu'il s'agit d'une instruction d'arithmétique comme ADD.

Opérations arithmétiques avancées

Les instructions MUL et DIV utilisent plusieurs registres pour leurs résultats :

  • Le produit de MUL est stocké dans EDX:EAX (64 bits répartis sur deux registres).
  • Après DIV, le quotient se trouve dans EAX et le reste dans EDX.

Opérations logiques

L'instruction NOT inverse tous les bits d'un registre. L'opération OR est représentée par le symbole | et est vraie lorsqu'au moins un des bits est à 1.

Représentation du code machine

Le code machine est généralement affiché en hexadécimal. Un octet peut être noté sous la forme 0xAA, où la base 16 facilite la lecture des valeurs binaires.

Exemples de manipulation de sous‑registres

Considérons la valeur 0xDEADBEEF stockée dans EAX. Les 16 bits de poids faible correspondent à AX = 0xBEEF. Le sous‑registre AH contient les bits de poids fort de AX, soit 0xBE, et non 0xEF comme on pourrait le supposer.

Récapitulatif des points clés

ConceptValeur / Description
Année de création du x861978
Passage à 32 bits1985
Introduction du mode 64 bits2003
Registre accumulateur 64 bitsRAX
Compteur d'instructions 64 bitsRIP
Mode de démarrageReal
Compatibilité descendanteOui
Affichage du code machineHexadécimal
Instruction logique ORSymbolisé par |

Ce cours fournit les bases essentielles pour appréhender l'architecture x86, ses registres, ses modes d'exécution et ses instructions fondamentales. Maîtriser ces concepts permet de lire, analyser et écrire du code assembleur efficace sur les plateformes x86 modernes.