Famille X86

  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Famille X86 as PDF for free.

More details

  • Words: 1,573
  • Pages: 21
La famille x86 Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole Polytechnique Fédérale de Lausanne

Désavantages de l’architecture x86 ◆ Très vieille architecture: basée sur le 8080 (commercialisé en 1974, 6’000 transistors et 8 registres) ◆ Le premier 8086 fut commercialisé en 1978, conçu par deux ingénieurs en 3 semaines (29’000 transistors et 8 registres) ◆ Seulement 8 registres pour les entiers et 8 pour les réels (et ces derniers sont organisés dans une pile). Plutôt que des registres généraux, c’est des registres spécialisés (extended accumulator) ◆ Bus 16 bits pour les données et pour les adresses ◆ Adressage segmenté (registres 16 bits) ◆ Longueur variable des instructions (1-17 bytes) ◆ “Difficile d’expliquer, impossible d’aimer” Page 2

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Processeurs d’Intel Pentium Pro Exécution désordonné

10 M

Pentium Superscalar

Nombre de transistors

1M

486 Pipeline 386 Extensions 32 bits

100 K

286 Mode protégé 24 bits d’adresse

8086 Premier processeur x86

10 K

8080 Registres de base 8008 8bits 4004 4 bits 1K 1971

1976

1981

1986

Date de commercialisation

Page 3

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

1991

1996

Processeur

Date

4004 8008 8080 8086 8088 80286 80386 80486 Pentium Pentium Pro Pentium II

4/71 0.108 4/72 0.108 4/74 2 6/78 5-10 6/79 5-8 2/82 8-12 10/85 16-33 4/89 25-100 3/93 60-233 3/95 150-200 5/97 233-400

Page 4

MHz Transistors 2300 3500 6000 29000 29000 134000 275000 1.2M 3.1M 5.5M 7.5M

Mémoire 640 16KB 64KB 1MB 1MB 16MB 4GB 4GB 4GB 4GB 4GB

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Caractéristique Premier microprocesseur Premier micro 8 bits Premier CPU général Premier micro 16 bits Utilisé par IBM PC Protection de mémoire Premier micro 32 bits Mémoire cache interne (8K) Deux pipelines Deux niveaux de cache interne MMX

Registres 80386

8086

31

15

7

0

EAX

AX

AH

AL

Accumulator

ECX

CX

CH

CL

Count reg: string, loop

EDX

DX

DH

DL

Data reg: multiply, divide

EBX

BX

BH

BL

Base addr reg

ESP

SP

Stack pointer

EBP

BP

Base ptr (for base of stack reg)

ESI

SI

Index reg, string source ptr

EDI

DI

Index reg, string dest ptr

EIP

IP

Instruction ptr (PC)

EFLAGS

Page 5

8

FLAGS

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Condition codes

15

0

CS

Code segment ptr

SS

Stack segment ptr (top of stack)

DS

Data segment ptr

ES

Extra data segment ptr

FS

Data segment ptr 2 (80386)

GS

Data segment ptr 3 (80386)

◆ Pour la partie virgule flottante: 8 registres à 80 bits (FPR0..FPR7) et un registre status à 16 bits (également stack pointer des 8 registres FPR)

Page 6

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

◆ Registre de flags: 11 10

9 8

7

6

OF DF IF TF SF ZF

4

2

0

AF

PF

CF

Conditions: CF carry ZF zero SF sign OF overflow AF auxiliary PF parity Bits de contrôle: DF direction IF interrupt TF trace Page 7

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Segmentation de la mémoire ◆ Mode réel (8086) adresse logique segment

offset

16 16

x

16 20

+ 20

adresse physique

Page 8

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

◆ Mode protégé (80286) adresse logique segment

offset

16 16

24

+

segmentation

24

adresse physique

Page 9

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

◆ Mode protégé (80386, 80486, Pentium) segment

offset

16 32

32

+ adresse linéaire 10

segmentation

32 20 10 20 10 20

paging

32

12

adresse physique Page 10

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Types d’opérande Source/destination registre registre registre mémoire mémoire

Seconde source registre constante mémoire registre constante

◆ Les constantes peuvent être à 8, 16 ou 32 bits ◆ Le registre peut être choisi parmi les 14 registres principaux (tous sauf IP et FLAGS)

Page 11

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Modes d’adressage ◆ Absolute ◆ Register indirect Registres en mode 16 bits: BX, SI, DI Registres en mode 32 bits: EAX, ECX, EDX, EBX, ESI, EDI ◆ Based Registres en mode 16 bits: BP, BX, SI, DI Registres en mode 32 bits: EAX, ECX, EDX, EBX, ESI, EDI Le déplacement peut être en 8, 16 ou 32 bits (ce dernier seulement en mode 32 bits) ◆ Indexed L’adresse est donnée par la somme de deux registres: BX+SI, BX+DI, BP+SI, BP+DI

Page 12

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

◆ Based indexed with displacement L’adresse est donnée par un déplacement plus le contenu de deux registres (les mêmes combinaisons que pour le mode indexed) ◆ Based with scaled indexed Cet adressage existe uniquement en mode 32 bits. L’adresse est donnée par: (registre base) + 2scale(registre index) où scale peut valoir 0, 1, 2 ou 3; le registre index peut être n’importe lequel des 8 registres généraux, à l’exception de ESP; le registre base peut être n’importe lequel des 8 registre généraux ◆ Based with scaled indexed and displacement L’adresse est donnée par la somme d’un déplacement plus l’expression du mode précédent

Page 13

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

◆ Pour tous les modes d’adressage, l’instruction devrait spécifier le registre de segment à utiliser. Afin de simplifier les instructions, les registres de segment sont choisis automatiquement, en fonction du registre d’adresse utilisé: ✸ les références aux instructions (IP) utilisent CS (code segment register) ✸ les références à la pile (BP ou SP) utilisent SS (stack segment register) ✸ pour tous les autres cas, le registre segment par défaut est DS (data segment register)

Page 14

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Types d’instruction ◆ Les opérations du 8086 se font sur des bytes ou des mots (16 bits). Le 80386 a introduit les opérations sur les double-mots (32 bits) ◆ Les instructions sur les entiers peuvent être classées en quatre grands groupes: ✸ ✸ ✸ ✸

transfert de données (move, push, pop) instructions arithmétiques et logiques contrôle de séquence (sauts conditionnels et inconditionnels, call, return) instructions sur les chaînes

◆ Les sauts peuvent se faire dans le même segment (near) ou dans un autre segment (far). Seulement les sauts inconditionnels peuvent changer de segment: ✸ en mode 16 bits: deux valeurs 16 bits suivent l’opcode. L’un sera le nouveau segment (à charger dans CS) et l’autre le nouveau IP ✸ en mode 32 bits: on donne le nouveau IP sur 32 bits Page 15

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

◆ Les instructions call et return sont également de type near et far. Dans le cas near, le call stocke dans la pile le IP et le segment. Il faut faire attention d’utiliser le même type de call et de return à chaque fois ◆ Exemples d’instruction: ✸ JE adr ✸ JMP adr ✸ CALL adr,seg

✸ ✸ ✸ ✸ ✸ ✸

MOVW BX,[DI+45] PUSH SI POP DI ADD AX,#6765 TEST DX,#42 MOVSB

Page 16

if equal(CC) then IP ← adr IP-128 ÿ adr < IP+128 IP ← adr SP ← SP-2; M[SS:SP] ← IP+5; SP ← SP-2; M[SS:SP] ← CS; IP ← adr; CS ← seg BX ← M[DS:DI+45] SP ← SP-2; M[SS:SP] ← SI DI ← M[SS:SP]; SP ← SP+2 AX ← AX+6765 set CC flags with (DX and 42) M[ES:DI] ← M[DS:SI]; DI ← DI+1; SI ← SI+1 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Instructions à virgule flottante ◆ Les registres en virgule flottante sont organisés sous la forme d’une pile: les opérations load et store sont équivalentes à des push et des pop; les opérations sont faites sur les deux opérandes au sommet de la pile ◆ Mais il est également possible de réaliser des opérations entre une position de mémoire et un registre FPR quelconque. Toutefois, les load et store opèrent uniquement avec le sommet de la pile ◆ Le sommet de la pile est ST. Le I-nième registre au-dessous du sommet est ST(i) ◆ Les donnés en mémoire peuvent être à 32 bits (single precision) ou 64 bits (extended precision). Mais, dans les registres, les données sont toujours stockées sur 80 bits

Page 17

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Format des instructions ◆ Une instruction peut avoir de 1 jusqu’à 17 bytes: Repeat Lock Seg. override Addr. override Size override

80386

Page 18

Opcode Opcode ext. mod, reg, r/m sc, index, base Disp8 Disp16 Disp24 Disp32 Imm8 Imm16 Imm24 Imm32

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Prefixes

Opcode Address specifiers

Displacement

Immediat

◆ Exemples: 4

JE

4

8

cond

displ

8

16

6

2

8

MOV 5

3

PUSH reg 3

SHL

v/ w

7

TEST

MOV BX,[DI+45]

16

ADD reg w 2

displ

PUSH SI

1

6

segment number 8

d/ r-m w postbyte

4

16

offset

CALLF

Page 19

JE PC+displacement

constant

ADD AX,#6765

8

1

SHL BX,1 8

w postbyte

8

immediat

TEST DX,#42

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

CALLF

Marché des microprocesseurs en 1997 180

Millions d’unités vendues

160 140

x86 (9) i960 (9) ARM (10)

SPARC (1.5) 29K (2.3) ST20 (2.3) PowerPC (3.9)

SuperH (23.5)

120 100

MIPS (44.0) Macintosh Workstations

80 60 40

68K (79.3)

PCs

20 0

Page 20

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Marché des microprocesseurs x86 en 1997 ◆ Intel: profit record de 6.9 KM $ 80 millions de pièces vendues 15% de Pentium II ou Pro ◆ AMD: pertes de 21 M $ ◆ Cyrix: acheté par National pertes de 6 M $ les 6 mois avant son achat

Page 21

Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne

Related Documents

Famille X86
December 2019 21
X86
June 2020 9
X86 Assembly
December 2019 17
Fiche Famille
June 2020 12
Ora10gforsolaris-x86
November 2019 10
Arquitectura X86
May 2020 5