conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. conception et exploitation...

32

Upload: others

Post on 07-Mar-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Chargés de cours : Frédéric Pétrot et Sébastien Viardot

Année universitaire 2011-2012

Page 2: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Structure du cours

C1 Introduction au VHDLC2 Introduction aux langages d'assemblage

pour les ISA x86 et MIPSC3 Conventions pour les appels de fonctions

en assembleur x86 et MIPS

2 / 32

Page 3: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction

Plan

1 Introduction

2 Introduction à l'assembleur x86

3 Introduction à l'assembleur MIPS

4 Traduction systématique des structures de contrôle

5 Vue mémoire

6 Informations techniques

3 / 32

Page 4: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction

Introduction

Étude du langage d'assemblage de 2 processeurs

Intel x86 (pentium)

ISA hégémonique, desktops, laptops et serveursConstructeur Intel a, compatibilité ascendante depuis 1979Machine CISC : Complex Instruction Set Computer

a. www.intel.com

MIPS R3000

ISA symbolique RISC : Reduced Instruction Set ComputerConstructeur MIPS a, 1988Importante part de marché dans l'embarqué (networking enparticulier), mais nettement moins que ARM b, favori dessmartphones et autres tablettes.

a. www.mips.com

b. www.arm.com 4 / 32

Page 5: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction

Introduction

CISC Intel x86

jeu d'instruction � proli�que �, 425 en 2004 sans lesextensions multimédia et 64 bits

destiné à être programmé par un humain

vise un code � compréhensible � et dense

nombreux modes d'adressage

opérandes peuvent être des cases mémoire

registres spécialisés par le matériel

cherche à optimiser la taille du programme par l'utilisationd'instructions complexes

5 / 32

Page 6: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction

Introduction

RISC MIPS R3000

jeu d'instruction minimaliste, 65 dans le R3000, moins de 80dans ses évolutions

destiné à être la cible d'un compilateur

instruction de taille �xe menant à une occupation mémoire duprogramme plus grande

registres à usage général, utilisation logicielle conventionnelle

un mode d'adressage unique, architecture load/store

opérande = registre

6 / 32

Page 7: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction

Introduction

Programmation assembleur

Langage traduit en binaire compréhensible par la machineTransformation fondamentalement syntaxique

caractéristiques di�érentes

important de connaître les deux types

Attention !

Ne pas confondre les 2 assembleurs ! ! !

7 / 32

Page 8: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur x86

Plan

1 Introduction

2 Introduction à l'assembleur x86

3 Introduction à l'assembleur MIPS

4 Traduction systématique des structures de contrôle

5 Vue mémoire

6 Informations techniques

8 / 32

Page 9: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur x86

ISA x86 : Registres

Registre bits bits Remarque32 bits 15 à 8 7 à 0%eax %ax parfois spécialisé

%ah %al

%ebx %bx parfois spécialisé%bh %bl

%ecx %cx parfois spécialisé%ch %cl

%edx %dx parfois spécialisé%dh %dl

%esi %si parfois spécialisé%edi %di parfois spécialisé%esp %sp pointeur de pile%ebp %bp pointeur de contexte%eip %ip pointeur d'instruction

%eflags %flags registre des indicateurs

Considérés comme

registres à usage

général durant ce

cours

Attention, ils

peuvent être utili-

sés implicitement

par certaines ins-

tructions que nous

n'étudierons pas

9 / 32

Page 10: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur x86

ISA x86

Adresses

Sur 32 bits, de 0x0000_0000 à 0xFFFF_FFFF

Données

Sur 32, 16 ou 8 bits

Instruction contient information de taille

Organisation mémoire little endian

Valeur 0x12345678 stockée en 0xDEAD_BEECAdresse 0xDEADBEEC 0xDEADBEED 0xDEADBEEE 0xDEADBEEF

Valeur 0x78 0x56 0x34 0x12

10 / 32

Page 11: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur x86

Instructions

Sous-ensemble pour commencer, ...

Su�xes

Précisent la taille de la valeur manipulée par l'instruction

l (long) : 32 bits

w (word) : 16 bits

b (byte) : 8 bits

Copies entre éléments mémorisants

movsu�xe source, destination

entre registres : movl %eax, %ebx ebx ← eax

registre vers mémoire : movb %al, v mem[v ]7..0 ← al

mémoire vers registre : movw u, %bx bx15..0 ← mem[u]15..0constante vers registre : movb $45, %dh dh7..0 ← 45

const. vers mém. : movl $0x1234, t mem[t]31..0 ← 0x00001234

mémoire vers mémoire : impossible11 / 32

Page 12: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur x86

Instructions

Les plus courantes, ...

Arithmétiques

addw %ax, %bx bx ← bx + ax

subb $20, %al al ← al − 20

negl %eax eax ← −eaxshll $1, %eax eax ← eax30..1|| 0shrl $4, %ebx ebx ← 04|| ebx31..4sarl $12, %ebx ebx ← ebx12

31|| ebx31..12

Logiques

andw $0xD0D0, %cx cx ← cx and 0xD0D0

orb $0xFA, %al al ← al or 0xFA

xorl %eax, %eax eax ← eax xor eax

notl %ecx ecx ← ecx

12 / 32

Page 13: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur x86

Instructions

Les plus courantes, ...

Comparaisons

cmpl $5, %eax e�ags ← �ags(eax − 5)

testb $0x01, %bl e�ags ← �ags(1 and bl)

Branchements

Décision prise en fonction du contenu des �ags

jmp label ip ← label

jxx label ip ←

{label si xx est vraie,

adresse instruction suivante si non xx

13 / 32

Page 14: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur x86

Instructions

Les plus courantes, ...

Branchements

Comparaison Entiers naturels Entiers signés> ja, jnbe jg, jnle

≥ jae, jnb jge, jnl

< jb, jnae jl, jnge

≤ jbe, jna jle, jng

= je, jz

6= jne, jnz

n not, a above, b below, g greater, l less, e equal, z zero

14 / 32

Page 15: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur MIPS

Plan

1 Introduction

2 Introduction à l'assembleur x86

3 Introduction à l'assembleur MIPS

4 Traduction systématique des structures de contrôle

5 Vue mémoire

6 Informations techniques

15 / 32

Page 16: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur MIPS

ISA MIPS

Registre Remarque32 bits$0 registre trash (peut être écrit, zéro en lecture)

$1-$30 non spécialisés$31 contient l'adresse de retour de fonction

Adresses

Sur 32 bits, de 0x0000_0000 à 0xFFFF_FFFF

Données

Sur 32, 16 ou 8 bits

Seules les instructions de chargement ou de stockage mémoirecontiennent information de taille

Organisation mémoire little endian

16 / 32

Page 17: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur MIPS

ISA MIPS

Sous-ensemble pour commencer, ...

Su�xes pour les chargements/stockages mémoire

Précisent la taille de la valeur manipulée par l'instruction

w (word) : 32 bitsh (half) : 16 bitsb (byte) : 8 bits

Copies entre éléments mémorisants

entre registres : add $3, $2, $0 $3← $2reg. vers mém. : sw $12, 96($5) mem[$5+ 96]31..0 ← $12mém. vers reg. : lb $2, -15($1) $2← 024||mem[$1− 15]7..0const. vers reg. : ori $3, $0, 0xBEEF $3← 016||0xBEEFconst. vers demi-mot poids fort reg. :lui $4, 0xDEAD $4← 0xDEAD||016const. vers mém. : impossiblemém. vers mém. : impossible 17 / 32

Page 18: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur MIPS

Instructions

Les plus courantes, ...

Arithmétiques

add $4, $12, $23 $4← $12+ $23

sub $14, $9, $30 $14← $9− $30

addi $2, $17, -1 $2← $17− 1

sllv $1, $12, $7 $1← $1231−$74...0...0 ‖ 0$74...0sra $4, $3, 9 $4← $39

31‖ $331...9

Logiques

and $14, $9, $30 $14← $9 and $30

ori $4, $3, 0xFF $4← $3 or 016||0x00FFxori $1, $12, 0xAAAA $1← $12 xor 016||0xAAAAnor $4, $12, $23 $4← $12 or $23

18 / 32

Page 19: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur MIPS

Instructions

Les plus courantes, ...

Comparaisons

sltu $4, $12, $23 $4←

{031 ‖ 1 si 0||$12 < 0||$23,032 sinon

slti $2, $17, -1 $2←

{031 ‖ 1 si $17 < 116||0xFFFF ,032 sinon

Branchements inconditionnels (sauts)

j label pc ← label

jr $31 pc ← $31

19 / 32

Page 20: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Introduction à l'assembleur MIPS

Instructions

Les plus courantes, ...

Branchements conditionnels

beq $2, $3, label

pc ←

{label si $2 = $3,

adresse instruction suivante sinon

bne $2, $3, label

pc ←

{label si $2 6= $3,

adresse instruction suivante sinon

blez $2, label pc ←

{label si $2 ≤ 0,

adresse instruction suivante sinon

bgtz $2, label pc ←

{label si $2 > 0,

adresse instruction suivante sinon

20 / 32

Page 21: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Traduction systématique des structures de contrôle

Plan

1 Introduction

2 Introduction à l'assembleur x86

3 Introduction à l'assembleur MIPS

4 Traduction systématique des structures de contrôle

5 Vue mémoire

6 Informations techniques

21 / 32

Page 22: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Traduction systématique des structures de contrôle

Traduction systématique des structures de contrôle

if

C :

int x = ...;

if (x == 5) {

x += 2;

} else {

x -= 4;

}

x86 :

; x est dans %eax

if: cmpl $5, %eax

jne else

addl $2, %eax

jmp endif

else: subl $4, %eax

endif: ...

MIPS :

; x est dans $4

if: li $1, 5

bne $4, $1, else

addi $4, $4, 2

j endif

else: addi $4, $4, -4

endif: ...

22 / 32

Page 23: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Traduction systématique des structures de contrôle

Traduction systématique des structures de contrôle

while

C :

int x = ...;

while (x > 5) {

x -= 1;

}

x86 :

while:

cmpl $5, %eax

jle endwhile

subl $1, %eax

jmp while

endwhile: ...

MIPS :

while:

slti $1, $4, 6

bne $1, $0, endwhile

addi $4, $4, -1

j while

endwhile: ...

23 / 32

Page 24: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Traduction systématique des structures de contrôle

Traduction systématique des structures de contrôle

for, équivalent structuré du while

C :

int x = ...;

unsigned int i;

for (i = 0;

i < 5;

i++) {

x = x + 4;

}

x86 :

movl $0, %ecx

for:

cmpl $5, %ecx

jae endfor

addl $4, %eax

addl $1, %ecx

jmp for

endfor:

MIPS :

li $2, $0

for:

slti $1, $2, 5

beq $1, $0, endfor

addi $4, $4, 4

addi $2, $2, 1

j for

endfor: ...

24 / 32

Page 25: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Traduction systématique des structures de contrôle

Premier programme : pgcd

C :

int main(void)

{

unsigned a, b;

a = 15;

b = 10;

while (a != b) {

if (a < b) {

b = b - a;

} else {

a = a - b;

}

}

return 0;

}

x86 :

.globl main

main:

enter $0, $0

movl $15, %ecx

movl $10, %edx

while:

cmpl %ecx, %edx

je endwhile

if:

jb else

subl %ecx, %edx

jmp endif

else:

subl %edx, %ecx

endif:

jmp while

endwhile:

leave

movl $0, %eax

ret

MIPS :

.globl main

main:

addi $4, $0, 15

addi $5, $0, 10

while:

beq $4, $5, endwhile

if:

slt $1, $4, $5

beq $1, $0, else

sub $5, $5, $4

j endif

else:

sub $4, $4, $5

endif:

j while

endwhile:

addi $2, $0, 0

jr $31

25 / 32

Page 26: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Traduction systématique des structures de contrôle

Éclaircissements

.globl main étent la visibilité de l'étiquette main aux autres�chiers

prologue et épilogue de fonction minimaux :

x86enter $0,$0

...

leave

; retourne zéro

movl $0, %eax

ret

MIPS...

; retourne zéro

addi $2, $0, 0

; $31 contient l'adresse

; de retour de la fonction

jr $31

Permet de faire tourner vos premiers programmesClari�cation complète au Cours 3 !

26 / 32

Page 27: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Vue mémoire

Plan

1 Introduction

2 Introduction à l'assembleur x86

3 Introduction à l'assembleur MIPS

4 Traduction systématique des structures de contrôle

5 Vue mémoire

6 Informations techniques

27 / 32

Page 28: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Vue mémoire

Exécutable en mémoire

Exécutable constitué de 4 parties

Code

Directive .text

En lecture seulementCommence � en bas � de la mémoire

Données connues statiquement

Directive .data

Variables globales initialisées au lancementEn lecture/écritureDirective .lcomm

Variables globales non explicitement initialisées, initialisées àzéro au lancementEn lecture/écriture

28 / 32

Page 29: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Vue mémoire

Exécutable en mémoire

Données connues statiquement

Directive .rodata

Constantes initialisées au lancementEn lecture seulement

Placées à la suite du code

Données allouées dynamiquement

Variables globales dont les adresses sont dé�nies à l'exécution

Placées à la suite des données initialisées

Pile

Gérée par le matériel et/ou le logiciel lors des appels de

fonctions

Commence � à la �n � de la mémoire

29 / 32

Page 30: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Vue mémoire

Résumé

0xFFFFFFFF...

0x........

0x........ pile

⇓......

⇑tas

⇑ .bss

0x........ .data

0x........ données .rodata

0x........ ⇑0x........ code .text

0x........

0x00000000...

0x00000000...

0x........

0x........ code .text

⇓0x........ .rodata

0x........ données .data

⇓ .bss

tas

⇓......

0x........ ⇑0x........ pile

0x........

0xFFFFFFFF...

30 / 32

Page 31: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Informations techniques

Plan

1 Introduction

2 Introduction à l'assembleur x86

3 Introduction à l'assembleur MIPS

4 Traduction systématique des structures de contrôle

5 Vue mémoire

6 Informations techniques

31 / 32

Page 32: Conception et exploitation des processeurs · 2012. 2. 9. · b . 4/32. Conception et exploitation des ropcesseurs Introduction Introduction CISC Intel x86 jeu d'instruction proli

Conception et exploitation des processeurs

Informations techniques

Informations techniques

Nom de �chier

Historiquement

x.s : assembleur

x.S : préprocesseur C avant assembleur

Maintenant comportement identique : cpp+asm

Génération du binairegcc -gstabs -o x x.s

-gstabs : ajoute les information permettant de déverminer

-o file : donne le nom file au �chier produit

32 / 32