architecture et langage assembleur - lisicramat/downloads/archi.pdf · sommaire 1 représentation...
TRANSCRIPT
![Page 1: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/1.jpg)
Architecture et Langage Assembleur
Eric [email protected]
Université du Littoral - Côte d'Opale
Eric Ramat [email protected] ()Architecture et Langage AssembleurUniversité du Littoral - Côte d'Opale 1
/ 152
![Page 2: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/2.jpg)
Déroulement du module
� 9h de cours
� 6 séances de 3h de travaux pratiques� chaque séance de tp :
� un compte rendu en �n de séance� une note
� note du module = sup(examen, 12 (examen + moyenne des notes TP)
2
![Page 3: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/3.jpg)
Sommaire
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
3
![Page 4: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/4.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
4
![Page 5: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/5.jpg)
Représentation de l'information
Mémoire centrale
Unité centrale de traitement (CPU)
Unité decontrôle
Unité arith-métique et
logique (ALU)Unités d'E/S
instructions données
Conséquence de l'architecture de von Neumann: lamémoire contient données ET programmes mélangés !
5
![Page 6: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/6.jpg)
Représentation de l'information
Mémoire centrale
Unité centrale de traitement (CPU)
Unité decontrôle
Unité arith-métique et
logique (ALU)Unités d'E/S
instructions données
Conséquence de l'architecture de von Neumann: lamémoire contient données ET programmes mélangés !
5
![Page 7: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/7.jpg)
Représentation de l'information
� Composants électroniques: présence ou absence de courant
� États symbolisés par 0 et 1
Nom Valeur
Bit 0 ou 1
Octet de 00000000 à 11111111
� Conséquence: données et programmes mélangés en mémoire et codésen binaire !!
→ Comment ça marche ??
6
![Page 8: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/8.jpg)
Représentation de l'information
La Mémoire :
� tableau de cases
� chaque case contient 8 bits (1octet)
� chaque case possède une adresse
7
![Page 9: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/9.jpg)
Représentation de l'information
On veut stocker
� des entiers positifs (12, 7850, ...)
� des entiers négatifs (-3, ...)
� des caractères ('A', 'r', ';', ...)
� des chaînes de caractères (�Hello�, ...)
� des réels (7.873, ...)
� des instructions
� ...
Mais la mémoirene contient que des bits (0 ou 1)!
Tout coder sousforme d'entiers
positifs en binaire
8
![Page 10: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/10.jpg)
Représentation de l'information
On veut stocker
� des entiers positifs (12, 7850, ...)
� des entiers négatifs (-3, ...)
� des caractères ('A', 'r', ';', ...)
� des chaînes de caractères (�Hello�, ...)
� des réels (7.873, ...)
� des instructions
� ...
Mais la mémoirene contient que des bits (0 ou 1)!
Tout coder sousforme d'entiers
positifs en binaire
8
![Page 11: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/11.jpg)
Représentation de l'information
Représentation usuelle :
14 = 1× 101 + 4× 100
Représentation positionnelle:
� choix d'une base b (10, 2, ...)
� choix de b symboles
Exemples:
� base 2 (0, 1) : 11102 = 1× 23 + 1× 22 + 1× 21 + 0× 20 = 1410
� base 3 (0, 1, 2): 1123 = 1× 32 + 1× 31 + 2× 30 = 1410
9
![Page 12: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/12.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
23 10
02
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310 = 101112
10
![Page 13: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/13.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
23 10
02
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310 = 101112
10
![Page 14: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/14.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3 10
02
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310 = 101112
10
![Page 15: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/15.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
23
10
02
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310 = 101112
10
![Page 16: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/16.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
23 10
02
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310 = 101112
10
![Page 17: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/17.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
23 10
0
2
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310 = 101112
10
![Page 18: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/18.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
23 10
02
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310 = 101112
10
![Page 19: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/19.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310 = 101112
10
![Page 20: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/20.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 21: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/21.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 22: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/22.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
11
1 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 23: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/23.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111
2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 24: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/24.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 25: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/25.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
5
1 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 26: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/26.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51
2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 27: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/27.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 28: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/28.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
2
1 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 29: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/29.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21
2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 30: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/30.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 31: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/31.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
1
0 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 32: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/32.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
10
2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 33: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/33.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 34: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/34.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
10 2
0
1
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 35: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/35.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
111 2
51 2
21 2
10 2
01
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 36: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/36.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
11
1
2
5
1
2
2
1
2
1
0
2
0
1
1
1
1
0
1
Résultat: 23 = 2310
= 101112
10
![Page 37: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/37.jpg)
Représentation de l'informationChanger de base
Comment passer 2310 en base 10, 2, 3, etc ?→ on utilise la division itérée
23 10
2
3
10
0
2
3
2
23 2
11
1
2
5
1
2
2
1
2
1
0
2
0
1
1
1
1
0
1
Résultat: 23 = 2310 = 101112
10
![Page 38: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/38.jpg)
Représentation et stockage en mémoireCas des entiers positifs (non-signés)
Méthode pour stocker un entier positif (non-signé) en mémoire:
1 Représentation du nombre en binaire
2 Découpage de cette représentation en octets
3 Stockage de chaque octet consécutivement
1267 2
6331 2
3161 2
1580 2
......
Représentationbinaire de126710 = 100111100112
1
10011110011
00000100 11110011
2
Mémoire 3
0 0 0 0 0 1 0 0x 1 1 1 1 0 0 1 1
...
0
11
![Page 39: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/39.jpg)
Représentation et stockage en mémoireCas des entiers positifs (non-signés)
Méthode pour stocker un entier positif (non-signé) en mémoire:
1 Représentation du nombre en binaire
2 Découpage de cette représentation en octets
3 Stockage de chaque octet consécutivement
1267 2
6331 2
3161 2
1580 2
......
Représentationbinaire de126710 = 100111100112
1
10011110011
00000100 11110011
2
Mémoire 3
0 0 0 0 0 1 0 0x 1 1 1 1 0 0 1 1
...
0
11
![Page 40: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/40.jpg)
Représentation et stockage en mémoireCas des entiers positifs (non-signés)
Méthode pour stocker un entier positif (non-signé) en mémoire:
1 Représentation du nombre en binaire
2 Découpage de cette représentation en octets
3 Stockage de chaque octet consécutivement
1267 2
6331 2
3161 2
1580 2
......
Représentationbinaire de126710 = 100111100112
1
10011110011
00000100 11110011
2
Mémoire 3
0 0 0 0 0 1 0 0x 1 1 1 1 0 0 1 1
...
0
11
![Page 41: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/41.jpg)
Représentation et stockage en mémoireCas des entiers positifs (non-signés)
Méthode pour stocker un entier positif (non-signé) en mémoire:
1 Représentation du nombre en binaire
2 Découpage de cette représentation en octets
3 Stockage de chaque octet consécutivement
1267 2
6331 2
3161 2
1580 2
......
Représentationbinaire de126710 = 100111100112
1
10011110011
00000100 11110011
2
Mémoire 3
0 0 0 0 0 1 0 0x 1 1 1 1 0 0 1 1
...
0
11
![Page 42: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/42.jpg)
Représentation et stockage en mémoireCas des entiers signés
Entiers non-signés: entiers positifsEntiers signés: entiers positifs et négatifs
Comment représenter des entiers négatifs ??
� Magnitude signée
� Complément à 1
� Complément à 2
� Biaisée
12
![Page 43: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/43.jpg)
Représentation et stockage en mémoireCas des entiers signés
Entiers non-signés: entiers positifsEntiers signés: entiers positifs et négatifs
Comment représenter des entiers négatifs ??
� Magnitude signée
� Complément à 1
� Complément à 2
� Biaisée
12
![Page 44: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/44.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 1:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 1 est obtenu en complémentant bit à bit sa valeurabsolue avec 1
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310|:(inversion des bits)
11111111− 00010111= 11101000
� Deux représentations pour 0: 000000002 et 111111112� Plage de nombres représentés sur 8 bits: −127 à +127
13
![Page 45: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/45.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 1:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 1 est obtenu en complémentant bit à bit sa valeurabsolue avec 1
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310|:(inversion des bits)
11111111− 00010111= 11101000
� Deux représentations pour 0: 000000002 et 111111112� Plage de nombres représentés sur 8 bits: −127 à +127
13
![Page 46: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/46.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 1:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 1 est obtenu en complémentant bit à bit sa valeurabsolue avec 1
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310|:(inversion des bits)
11111111− 00010111= 11101000
� Deux représentations pour 0: 000000002 et 111111112� Plage de nombres représentés sur 8 bits: −127 à +127
13
![Page 47: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/47.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 1:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 1 est obtenu en complémentant bit à bit sa valeurabsolue avec 1
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112
� Complément à 1 de | − 2310|:(inversion des bits)
11111111− 00010111= 11101000
� Deux représentations pour 0: 000000002 et 111111112� Plage de nombres représentés sur 8 bits: −127 à +127
13
![Page 48: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/48.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 1:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 1 est obtenu en complémentant bit à bit sa valeurabsolue avec 1
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310|:(inversion des bits)
11111111− 00010111= 11101000
� Deux représentations pour 0: 000000002 et 111111112� Plage de nombres représentés sur 8 bits: −127 à +127
13
![Page 49: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/49.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 1:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 1 est obtenu en complémentant bit à bit sa valeurabsolue avec 1
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310|:(inversion des bits)
11111111− 00010111= 11101000
� Deux représentations pour 0: 000000002 et 111111112� Plage de nombres représentés sur 8 bits: −127 à +127
13
![Page 50: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/50.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 1:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 1 est obtenu en complémentant bit à bit sa valeurabsolue avec 1
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310|:(inversion des bits)
11111111− 00010111= 11101000
� Deux représentations pour 0: 000000002 et 111111112� Plage de nombres représentés sur 8 bits: −127 à +127
13
![Page 51: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/51.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 1:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 1 est obtenu en complémentant bit à bit sa valeurabsolue avec 1
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310|:(inversion des bits)
11111111− 00010111= 11101000
� Deux représentations pour 0: 000000002 et 111111112� Plage de nombres représentés sur 8 bits: −127 à +127
13
![Page 52: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/52.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 2:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 2 est obtenu en ajoutant 1 au complément à 1 desa valeur absolue (et inversement)
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310| = 111010002� Ajout de 1: 111010002 + 1 = 111010012
� Une seule représentation pour 0: 000000002� Plage de nombres représentés sur 8 bits: −128 à +127
14
![Page 53: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/53.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 2:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 2 est obtenu en ajoutant 1 au complément à 1 desa valeur absolue (et inversement)
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310| = 111010002� Ajout de 1: 111010002 + 1 = 111010012
� Une seule représentation pour 0: 000000002� Plage de nombres représentés sur 8 bits: −128 à +127
14
![Page 54: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/54.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 2:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 2 est obtenu en ajoutant 1 au complément à 1 desa valeur absolue (et inversement)
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310| = 111010002� Ajout de 1: 111010002 + 1 = 111010012
� Une seule représentation pour 0: 000000002� Plage de nombres représentés sur 8 bits: −128 à +127
14
![Page 55: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/55.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 2:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 2 est obtenu en ajoutant 1 au complément à 1 desa valeur absolue (et inversement)
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112
� Complément à 1 de | − 2310| = 111010002� Ajout de 1: 111010002 + 1 = 111010012
� Une seule représentation pour 0: 000000002� Plage de nombres représentés sur 8 bits: −128 à +127
14
![Page 56: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/56.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 2:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 2 est obtenu en ajoutant 1 au complément à 1 desa valeur absolue (et inversement)
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310| = 111010002
� Ajout de 1: 111010002 + 1 = 111010012
� Une seule représentation pour 0: 000000002� Plage de nombres représentés sur 8 bits: −128 à +127
14
![Page 57: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/57.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 2:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 2 est obtenu en ajoutant 1 au complément à 1 desa valeur absolue (et inversement)
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310| = 111010002� Ajout de 1: 111010002 + 1 = 111010012
� Une seule représentation pour 0: 000000002� Plage de nombres représentés sur 8 bits: −128 à +127
14
![Page 58: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/58.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 2:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 2 est obtenu en ajoutant 1 au complément à 1 desa valeur absolue (et inversement)
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310| = 111010002� Ajout de 1: 111010002 + 1 = 111010012
� Une seule représentation pour 0: 000000002� Plage de nombres représentés sur 8 bits: −128 à +127
14
![Page 59: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/59.jpg)
Représentation et stockage en mémoireCas des entiers signés
Complément à 2:Le bit de poids fort correspond au signe:
� 0 = positif
� 1 = négatif
Le complément à 2 est obtenu en ajoutant 1 au complément à 1 desa valeur absolue (et inversement)
Exemple: représentation de −2310 ?
� | − 2310| = 2310 = 000101112� Complément à 1 de | − 2310| = 111010002� Ajout de 1: 111010002 + 1 = 111010012
� Une seule représentation pour 0: 000000002� Plage de nombres représentés sur 8 bits: −128 à +127
14
![Page 60: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/60.jpg)
Représentation et stockage en mémoireCas des caractères
Plusieurs formats de représentation binaire:� EBCDIC (Extended Binary-Coded Decimal Interchange Code)
� Représentation sur 8 bits (256 caractères possibles)� Utilisé autrefois sur les mainframes IBM
� ASCII (American Standard Code for Information Interchange)� représentation sur 7 bits (pas d'accents)� ASCII étendu : sur 8 bits (mais pas normalisé)(ex: OEM, ANSI)
� Unicode : encodage sur 16 bits (65536 possibilités) pour représentertous les caractères de toutes les langues
15
![Page 61: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/61.jpg)
Représentation et stockage en mémoireCas des caractères
Exemple: Table ASCII restreinte
16
![Page 62: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/62.jpg)
Représentation et stockage en mémoireCas des nombres réels
Non traité dans ce cours.Voir la norme IEEE 754 pour la représentation en binaire des �ottants.
17
![Page 63: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/63.jpg)
Représentation et stockage en mémoire
Les types de données fondamentaux:
bit (bit) 1
octet (byte) 8
mot (word) 16
double mot (d-word) 32
quad-mot (q-word) 64
18
![Page 64: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/64.jpg)
Représentation et stockage en mémoire
Ordre d' �empilement� lorsque stockage sur plusieurs octets ?Exemple:
24816310 = 1111001001011000112
0x00001005 ...
0x00001004 000x00001003 030x00001002 c90x00001001 63 x
0x00001000 ...
little-endian
lsb (Less Signi�cant Bit) àl'adresse la plus petite
0x00001005 ...
0x00001004 63 x
0x00001003 c90x00001002 030x00001001 000x00001000 ...
big-endian
msb (Most Signi�cant Bit)à l'adresse la plus petite
19
![Page 65: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/65.jpg)
Représentation et stockage en mémoire
Ordre d' �empilement� lorsque stockage sur plusieurs octets ?Exemple:
24816310 = 1111001001011000112
00000000 00000011 11001001 01100011
0x00001005 ...
0x00001004 000x00001003 030x00001002 c90x00001001 63 x
0x00001000 ...
little-endian
lsb (Less Signi�cant Bit) àl'adresse la plus petite
0x00001005 ...
0x00001004 63 x
0x00001003 c90x00001002 030x00001001 000x00001000 ...
big-endian
msb (Most Signi�cant Bit)à l'adresse la plus petite
19
![Page 66: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/66.jpg)
Représentation et stockage en mémoire
Ordre d' �empilement� lorsque stockage sur plusieurs octets ?Exemple:
24816310 = 1111001001011000112
00 03 C9 63
0x00001005 ...
0x00001004 000x00001003 030x00001002 c90x00001001 63 x
0x00001000 ...
little-endian
lsb (Less Signi�cant Bit) àl'adresse la plus petite
0x00001005 ...
0x00001004 63 x
0x00001003 c90x00001002 030x00001001 000x00001000 ...
big-endian
msb (Most Signi�cant Bit)à l'adresse la plus petite
19
![Page 67: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/67.jpg)
Représentation et stockage en mémoire
Ordre d' �empilement� lorsque stockage sur plusieurs octets ?Exemple:
24816310 = 1111001001011000112
00 03 C9 63
0x00001005 ...
0x00001004 000x00001003 030x00001002 c90x00001001 63 x
0x00001000 ...
little-endian
lsb (Less Signi�cant Bit) àl'adresse la plus petite
0x00001005 ...
0x00001004 63 x
0x00001003 c90x00001002 030x00001001 000x00001000 ...
big-endian
msb (Most Signi�cant Bit)à l'adresse la plus petite
19
![Page 68: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/68.jpg)
Représentation et stockage en mémoire
Ordre d' �empilement� lorsque stockage sur plusieurs octets ?Exemple:
24816310 = 1111001001011000112
00 03 C9 63
0x00001005 ...
0x00001004 000x00001003 030x00001002 c90x00001001 63 x
0x00001000 ...
little-endian
lsb (Less Signi�cant Bit) àl'adresse la plus petite
0x00001005 ...
0x00001004 63 x
0x00001003 c90x00001002 030x00001001 000x00001000 ...
big-endian
msb (Most Signi�cant Bit)à l'adresse la plus petite
19
![Page 69: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/69.jpg)
Représentation et stockage en mémoire
Ordre d' �empilement� lorsque stockage sur plusieurs octets ?Exemple:
24816310 = 1111001001011000112
00 03 C9 63
0x00001005 ...
0x00001004 000x00001003 030x00001002 c90x00001001 63 x
0x00001000 ...
little-endian
lsb (Less Signi�cant Bit) àl'adresse la plus petite
0x00001005 ...
0x00001004 63 x
0x00001003 c90x00001002 030x00001001 000x00001000 ...
big-endian
msb (Most Signi�cant Bit)à l'adresse la plus petite
Architecture ix86:adressage par
octet little endian
19
![Page 70: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/70.jpg)
Représentation et stockage en mémoire
Note sur le passage de base 2 en base 16 et inversement:
Base 2: 10011110011
B2 B10 B16
1111 15 F1110 14 E1101 13 D1100 12 C1011 11 B1010 10 A1001 9 91000 8 80111 7 70110 6 60101 5 50100 4 40011 3 30010 2 20001 1 10000 0 0
20
![Page 71: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/71.jpg)
Représentation et stockage en mémoire
Note sur le passage de base 2 en base 16 et inversement:
Base 2: 10011110011
0100 1111 0011
B2 B10 B16
1111 15 F1110 14 E1101 13 D1100 12 C1011 11 B1010 10 A1001 9 91000 8 80111 7 70110 6 60101 5 50100 4 40011 3 30010 2 20001 1 10000 0 0
20
![Page 72: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/72.jpg)
Représentation et stockage en mémoire
Note sur le passage de base 2 en base 16 et inversement:
Base 2: 10011110011
0100 1111 0011
Base 16: 4 F 3
B2 B10 B16
1111 15 F1110 14 E1101 13 D1100 12 C1011 11 B1010 10 A1001 9 91000 8 80111 7 70110 6 60101 5 50100 4 40011 3 30010 2 20001 1 10000 0 0
20
![Page 73: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/73.jpg)
Représentation et stockage en mémoire
Note sur le passage de base 2 en base 16 et inversement:
Base 2: 10011110011
0100 1111 0011
Base 16: 4 F 3
B2 B10 B16
1111 15 F1110 14 E1101 13 D1100 12 C1011 11 B1010 10 A1001 9 91000 8 80111 7 70110 6 60101 5 50100 4 40011 3 30010 2 20001 1 10000 0 0
20
![Page 74: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/74.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
21
![Page 75: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/75.jpg)
Fonctionnement de l'ordinateurRetour sur l'architecture de von Neumann
Mémoire centrale
Unité centrale de traitement (CPU)
Unité decontrôle
Unité arith-métique et
logique (ALU)Unités d'E/S
instructions données
22
![Page 76: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/76.jpg)
Fonctionnement de l'ordinateurRetour sur l'architecture de von Neumann
Mémoire centrale
Unité centrale de traitement (CPU)Unité centrale de traitement (CPU)
Unité decontrôle
Unité arith-métique et
logique (ALU)Unités d'E/S
instructions données
22
![Page 77: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/77.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
23
![Page 78: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/78.jpg)
Le processeur 80x86
Plusieurs familles de micro-processeurs
� x86 (Intel, AMD) : PC et compatibles
� PowerPC (IBM) : équipent les Wii, PS3, XBox 360
� 68x00 (Motorola)
� SPARC, MIPS, ARM, etc.
24
![Page 79: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/79.jpg)
Le processeur 80x86
x86 : famille de microprocesseurs compatibles avec le jeu d'instructions del'Intel 8086
� Evolution :� début 80 : 8086, microprocesseur 16 bits� puis 80286, 80386, 80486, Pentium, etc.� augmentation de la fréquence d'horloge, et de la largeur des busd'adresses et de données
� ajout de nouvelles instructions et registres
� Compatibilité ascendante� un programme écrit dans le langage machine du 286 peut s'exécutersur un 386
NB : en TP, on utilisera un assembleur 8086 sous linux, et onexécutera le programme sur des Pentium
25
![Page 80: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/80.jpg)
Le processeur 80x86
x86 : famille de microprocesseurs compatibles avec le jeu d'instructions del'Intel 8086
� Evolution :� début 80 : 8086, microprocesseur 16 bits� puis 80286, 80386, 80486, Pentium, etc.� augmentation de la fréquence d'horloge, et de la largeur des busd'adresses et de données
� ajout de nouvelles instructions et registres
� Compatibilité ascendante� un programme écrit dans le langage machine du 286 peut s'exécutersur un 386
NB : en TP, on utilisera un assembleur 8086 sous linux, et onexécutera le programme sur des Pentium
25
![Page 81: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/81.jpg)
Le processeur 80x86Architecture interne
26
![Page 82: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/82.jpg)
Le processeur 80x86Architecture interne
� Bus : nappes de �ls transportant l'info(données sur 16 bits, adresses sur 20 bits, infos de contrôle)
� Registres : emplacements de stockage à accès rapide
� UAL : unité de calcul (entiers et booléens)
� Unité de contrôle : interprète les instructions
� Horloge : cadence les instructions
27
![Page 83: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/83.jpg)
Le processeur 80x86Cycle de fonctionnement de l'unité de contrôle
Décodage de l'instructionLecture des registres
Lecture des opéran-des en mémoire
Exécution del'instruction
Ecriture du résultaten mémoire
Récupérationde l'instruction
courante en mémoire
1 2
3
4
5
28
![Page 84: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/84.jpg)
Le processeur 80x86La mémoire
Sur une architecture 80x86, 32 bits :modèle mode réel, modèle segmenté
29
![Page 85: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/85.jpg)
Le processeur 80x86Les registres
Registres présents sur une architecture 80x86, 32 bits :
� 16 registres de base
� + d'autres registres
Registres de base classés en 4 catégories
1 Registres généraux (8, pour stocker adresses et opérandes)
2 Registres de segments
3 EFLAGS (registre d'état et de contrôle)
4 EIP (Extended Instruction Pointer)(pointe sur la prochaine instruction à exécuter)
30
![Page 86: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/86.jpg)
Le processeur 80x86Les registres
Registres généraux
EAX
EBX
ECX
EDX
ESI
EDI
EBP
ESP
31 0
Registres de segments
CS
DS
SS
ES
FS
GS
15 0
Registres d'état/contrôle
EFLAGS
31 0
Pointeur d'instruction
EIP
31 0
31
![Page 87: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/87.jpg)
Le processeur 80x86Les registres
Utilité des registres :
� stocker des opérandes lors d'opérations logiques ou arithmétiques
� stocker des opérandes pour des calculs d'adresses
� stocker des pointeurs (adresses mémoire)
� certaines instructions imposent les registres à utiliser
32
![Page 88: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/88.jpg)
Le processeur 80x86Les registres
Utilisations particulières :
� EAX : accumulateur ou valeur de retour de fonction
� EBX : pointeur vers les données dans le segment DS
� ECX : compteur de boucles
� EDX : accumulateur aux. et pointeur pour les entrées/sorties
� ESI : pointeur source pour la manipulation de caractères
� EDI : pointeur destination pour la manipulation de caractères
� ESP : pointeur de début de cadre de pile (segment SS)
� EBP : pointeur de bas de pile (segment SS)
33
![Page 89: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/89.jpg)
Le processeur 80x86Les registres
� premiers processeurs : registres 16 bits (AX, BX, etc.)
� à partir du 386 : 32 bits (EAX, EBX, etc.)
Manipulation des registres 32, 16 et 8 bits :
31 16 15 8 7 0
EAX AH AL AX = {AH et AL}
EBX BH BL BX = {BH et BL}
ECX CH CL CX = {CH et CL}
EDX DH DL DX = {DH et DL}
ESI SI
EDI DI
EBP BP
ESP SP
34
![Page 90: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/90.jpg)
Le registre EFLAGS
EFLAGS : Registre 32 bits
� Indicateurs d'état : résultat d'instructions arithmétiques(mis à jour après chaque instruction)
� Carry Flag CF : retenue en excédent� Parity Flag PF : nombre pair de `1'� Zero Flag ZF : vaut 1 si résultat nul� Sign Flag SF : vaut 0 si bit de poids fort = 0� Over�ow Flag OF : 0 si le résultat peut être stocké dans l'opérandedestination
� Indicateur DF : sens de l'auto-incrémentation(manipulation de chaînes)
� Indicateurs système
35
![Page 91: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/91.jpg)
Le processeur 80x86Les instructions machine
� Chaque processeur possède son propre jeu d'instructions machinedirectement compréhensibles
� Chaque instruction possède un identi�ant numérique (opcode)� Programmation directe du processeur avec les instructions machines:
� di�cile et long� quasi-impossible à comprendre
36
![Page 92: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/92.jpg)
Le processeur 80x86Les instructions machine
Exemple de programme en langage machine:
A1 01 10 03 06 01 12 A3 01 14
Ce programme additionne le contenu de deux cases mémoires et range lerésultat dans une troisième...
opcode Symbole octets
A1 MOV AX, [adr] 3 AX ← contenu de l'adresse adr
03 06 ADD AX, [adr] 4 AX ← AX + contenu de l'adresse adr
A3 MOV [adr], AX 3 range AX à l'adresse adr
Transcription du programme :
A1 01 10 MOV AX, [0110] Charge AX avec le contenu de 0110
03 06 01 12 ADD AX, [0112] Ajouter le contenu de 0112 à AX
A3 01 14 MOV [01 14], AX Ranger AX à l'adresse 0114
37
![Page 93: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/93.jpg)
Le processeur 80x86Les instructions machine
Exemple de programme en langage machine:
A1 01 10 03 06 01 12 A3 01 14
Ce programme additionne le contenu de deux cases mémoires et range lerésultat dans une troisième...
opcode Symbole octets
A1 MOV AX, [adr] 3 AX ← contenu de l'adresse adr
03 06 ADD AX, [adr] 4 AX ← AX + contenu de l'adresse adr
A3 MOV [adr], AX 3 range AX à l'adresse adr
Transcription du programme :
A1 01 10 MOV AX, [0110] Charge AX avec le contenu de 0110
03 06 01 12 ADD AX, [0112] Ajouter le contenu de 0112 à AX
A3 01 14 MOV [01 14], AX Ranger AX à l'adresse 0114
37
![Page 94: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/94.jpg)
Le processeur 80x86Les instructions machine
Exemple de programme en langage machine:
A1 01 10 03 06 01 12 A3 01 14
Ce programme additionne le contenu de deux cases mémoires et range lerésultat dans une troisième...
opcode Symbole octets
A1 MOV AX, [adr] 3 AX ← contenu de l'adresse adr
03 06 ADD AX, [adr] 4 AX ← AX + contenu de l'adresse adr
A3 MOV [adr], AX 3 range AX à l'adresse adr
Transcription du programme :
A1 01 10 MOV AX, [0110] Charge AX avec le contenu de 0110
03 06 01 12 ADD AX, [0112] Ajouter le contenu de 0112 à AX
A3 01 14 MOV [01 14], AX Ranger AX à l'adresse 0114
37
![Page 95: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/95.jpg)
Le processeur 80x86Les instructions machine
� Programmation directe du processeur avec les instructions machines:� di�cile et long� quasi-impossible à comprendre
Utilisation d'un langage de plus haut niveau : l'assembleur
38
![Page 96: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/96.jpg)
Le processeur 80x86Les instructions machine
� Programmation directe du processeur avec les instructions machines:� di�cile et long� quasi-impossible à comprendre
Utilisation d'un langage de plus haut niveau : l'assembleur
38
![Page 97: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/97.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
39
![Page 98: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/98.jpg)
Langage AssembleurDé�nition
Langage haut niveau(Ada, C++, etc.)
c:= c + 3;
. . .
Langage machineBinaire en mémoire qui forme un exécutable
0101011110001110. . .
?Langage d'assemblageMnémoniques associées au langage machine
mov eax, [esi]add eax, 3. . .
Compilation
Assemblage
40
![Page 99: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/99.jpg)
Langage AssembleurDé�nition
Langage haut niveau(Ada, C++, etc.)
c:= c + 3;
. . .
Langage machineBinaire en mémoire qui forme un exécutable
0101011110001110. . .
?
Langage d'assemblageMnémoniques associées au langage machine
mov eax, [esi]add eax, 3. . .
Compilation
Assemblage
40
![Page 100: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/100.jpg)
Langage AssembleurDé�nition
Langage haut niveau(Ada, C++, etc.)
c:= c + 3;
. . .
Langage machineBinaire en mémoire qui forme un exécutable
0101011110001110. . .
?
Langage d'assemblageMnémoniques associées au langage machine
mov eax, [esi]add eax, 3. . .
Compilation
Assemblage
40
![Page 101: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/101.jpg)
Langage AssembleurDé�nition
Langage haut niveau(Ada, C++, etc.)
c:= c + 3;
. . .
Langage machineBinaire en mémoire qui forme un exécutable
0101011110001110. . .
?
Langage d'assemblageMnémoniques associées au langage machine
mov eax, [esi]add eax, 3. . .
Compilation
Assemblage
40
![Page 102: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/102.jpg)
Langage AssembleurDé�nition
Langage haut niveau(Ada, C++, etc.)
c:= c + 3;
. . .
Langage machineBinaire en mémoire qui forme un exécutable
0101011110001110. . .
?
Langage d'assemblageMnémoniques associées au langage machine
mov eax, [esi]add eax, 3. . .
Compilation
Assemblage
40
![Page 103: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/103.jpg)
Langage AssembleurDé�nition
Langage haut niveau(Ada, C++, etc.)
c:= c + 3;
. . .
Langage machineBinaire en mémoire qui forme un exécutable
0101011110001110. . .
?
Langage d'assemblageMnémoniques associées au langage machine
mov eax, [esi]add eax, 3. . .
Compilation
Assemblage
40
![Page 104: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/104.jpg)
Langage Assembleur
Avantages :
� Accès à toutes les possibilités de la machine
� Vitesse d'exécution du code
� Faible taille du code généré
� Meilleure connaissance du fonctionnement de la machine
Inconvénients :
� Temps de codage plus long
� Fastidieux
� Pas de structures évoluées
� Garde-fous minimaux
� Absence de portabilité
41
![Page 105: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/105.jpg)
Langage Assembleur
Pourquoi apprendre l'assembleur ?
� Mieux comprendre la façon dont fonctionne un ordinateur
� Mieux comprendre comment fonctionnent compilateurs et langageshaut niveau
42
![Page 106: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/106.jpg)
Langage AssembleurProcédure d'assemblage
En 3 phases:
1 Saisie du code assembleur avec un éditeur de texte
2 Compilation du code (assemblage)
3 Edition des liens
hello.asm
(code source)hello.o
(�chier objet)
hello
(�chier exécutable)
assemblage
nasm -f elf hello.asmédition de liens
ld hello.o -o hello
debuggage
gdb hello
43
![Page 107: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/107.jpg)
Langage Assembleurgdb: debugger sous Linux
gdb = outil indispensable de debuggage !
Quelques commandes utiles :
� Lancement : gdb <nom prg>
� break <label> : dé�nition d'un point d'arrêt (parmi les étiquettes ducode asm du prog.)
� info break : liste des points d'arrêt
� run : exécution du programme jusqu'au premier point d'arrêt
� c (continue) : exécution jusqu'au prochain point d'arrêt
44
![Page 108: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/108.jpg)
Langage Assembleurgdb: debugger sous Linux
� info registers : valeur des registres du CPU
� info variables : liste des variables avec leur adresse
� x <@ var> : valeur contenue à l'adresse de la variable
� set disassembly-flavor intel : indique que l'on veut voir le codeassembleur selon le type Intel
� disassemble <label>: a�che le code assembleur à partir del'étiquette jusqu'à la suivante
45
![Page 109: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/109.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
46
![Page 110: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/110.jpg)
Structure d'un programme assembleurUn premier programme
[BITS 32]
section .data
msg: db 'Hello world', 0xa
section .text
global _start
_start:
mov ebx, 0
mov eax, 1
int 0x80
entête
notion de section
déclaration de variableet initialisation
nom obligatoire du pg principaldébut du programme
47
![Page 111: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/111.jpg)
Structure d'un programme assembleur
� Entête ([BITS 16] ou [BITS 32]) : les instructions seront interprétéespar défaut selon ces modes
� section .data : zone de déclaration des données initialisées
� section .bss : zone de déclaration des données non initialisées
� section .text : contient le code
� programme principal global nommé _start
� commentaires commencent par ;
48
![Page 112: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/112.jpg)
Structure d'un programme assembleurFormat général d'une instruction
[label:] mnémonique arg1, arg2, arg3
� label ou étiquette : identi�cateur suivi d'un ':'identi�e une position en mémoire (code ou données)
� mnémonique: nom correspondant à l'opcode de l'opérateur(l'opération à réaliser)
� argi : entre 0 et 3 opérandes (les données manipulées)� notation Intel : destination = opérande de gauche
49
![Page 113: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/113.jpg)
Structure d'un programme assembleurFormat général d'une instruction
� Syntaxe d'un label :� mot composé de lettres, chi�res, _ $ # @ ~ . ?
� commançant par une lettre, un chi�re, un point, `_' ou `?'
� Constantes numériques:� entiers positifs post�xés par leur base (b, h, q)
100 ; décimale
0a2h ; hexadécimal (ou 0x0a2)
777q ; octal
100b ; binaire
� Caractères et chaînes :'h' ; caractère 'h'
'hello' ; chaîne 'hello'
50
![Page 114: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/114.jpg)
Structure d'un programme assembleurDéclaration de variables
Déclaration de variables initialisées (dans la section .data) :
<label> : d<type> <valeur>
Exemples: Types
octet db (byte)
mot dw (word)
double-mot dd (double-word)
quad-mot dq (quad-word)
la 2ème lettre indiquela taille à réserver
section .data
; déclaration d'un octet et
; initialisation à 34
var1 : db 34
; déclaration d'un tableau (2, 5, 31)
t : dw 2, 4, 0x1F
; déclaration d'un double-mot (4 octets)
x : dd 364
; déclaration d'un tableau
t2 : times 5 db 0
51
![Page 115: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/115.jpg)
Structure d'un programme assembleurDéclaration de variables
Déclaration de variables non initialisées (dans la section .bss) :
<label> : res<type> <valeur>
Exemples:
section .bss
x : resw ; réservation d'un mot
tab : resb 32 ; réservation d'un tableau de 32 octets
52
![Page 116: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/116.jpg)
Structure d'un programme assembleurDéclaration de constantes
Déclaration de constantes (pas de `:') :
<label> equ <valeur>
Exemple :
max equ 15
Constantes spéciales :
� $ : adresse courante dans la déclaration des variables (segment dedonnées)
� $$ : adresse du début du segment courant
Exemple d'utilisation:
chaine : db 'hello'
taille equ $ - chaine
53
![Page 117: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/117.jpg)
Structure d'un programme assembleurType d'opérandes d'une instruction
Modes d'adressage
Une instruction spéci�e :
� l'opération à réaliser (opérateur)
� les données à manipuler (opérandes)
Les données (opérandes) peuvent être de plusieurs types :
� Registre : dans un registre du processeur
� Mémoire : correspond à une zone de la mémoire identi�ée par sonadresse logique
� Immédiat : constante numérique stockée dans le code
� Implicite: non indiquée, mais implicite du fait de l'opérateur (ex.:incrémentation, le 1 est implicite)
54
![Page 118: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/118.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
55
![Page 119: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/119.jpg)
Modes d'adressage
Illustration avec l'instruction de transfert
mov <op1 >, <op2 >
� avec� op1 : la destination (registre, adresse mémoire)� op2 : la donnée à transférer (valeur, registre, adresse, etc.)
� action : le contenu de op2 est transféré dans op1
56
![Page 120: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/120.jpg)
Modes d'adressage
1. L'adressage immédiat (ou par valeur):
mov ax, 12
� Le contenu du registre est initialisé par une valeur immédiate
� La valeur fait partie de l'instruction
� Le nombre de bits du registre (op1) détermine le nombre de bitsimpliqués dans l'opération:
mov bh, 5 ; bh := 5 (transfert de 8 bits)
mov bx, 5 ; bx := 5 (transfert de 16 bits)
mov eax, 0x5A32 ; eax := 0x5A32 (transfert de 32 bits)
57
![Page 121: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/121.jpg)
Modes d'adressage
2. L'adressage par registre :
mov eax, ebx
� Le contenu du registre eax est initialisé par le contenu du registre ebx
� Pas d'accès mémoire
� La taille des registres doivent être équivalentes
mov eax, ebp ; eax := ebp (transfert de 32 bits)
mov bh, al ; bh := al (transfert de 8 bits)
58
![Page 122: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/122.jpg)
Modes d'adressage
3. L'adressage direct :
mov eax, <adresse_mémoire>
� L'adresse de la donnée fait partie de l'instruction
� La taille du registre destination détermine le nombre de bits lus enmémoire
id1 : db 231 ; déclaration et initialisation d'une variable
...
mov ebx, id1 ; ebx contient l'adresse mémoire de la variable id1
mov eax, [id1] ; eax contient la valeur de la zone mémoire identifiée
; par la var. id1 (soit 231)
mov edx, [0x2000] ; edx contient la valeur de la zone mémoire
; située à l'adresse 0x2000
59
![Page 123: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/123.jpg)
Modes d'adressage
4. L'adressage indirect :
mov eax, [ebx]
� L'adresse de la donnée est contenue dans un registre (ebx, ebp, esi, ouedi)
� La taille du registre destination détermine le nombre de bits lus enmémoire
Exemples d'adressages basés, ou indexés simples :
mov ebx, 0x2000 ; ebx := 0x2000 (adresse mémoire)
mov eax, [ebx] ; eax := contenu de la zone mémoire située à l'adresse 0x2000
mov dx, [esi] ; dx := 16 bits situés dans la zone mémoire
; dont l'adresse est contenue dans esi
mov dx, [esi+2]
60
![Page 124: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/124.jpg)
Modes d'adressage
4. L'adressage indirect :
O�set = base + (index*echelle) + déplacement
O�set =
EAX
EBX
ECX
EDX
ESP
EBP
ESI
EDI
+
EAX
EBX
ECX
EDX
EBP
ESI
EDI
∗
1
2
3
4
+
rien
8bits
16bits
32bits
61
![Page 125: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/125.jpg)
Modes d'adressage
4. L'adressage indirect :
Exemples d'adressages basés et indexés :
tab: dw 5, 10, 34 ; déclaration d'un tableau
...
mov ebx, tab ; bx contient l'adresse du tableau
mov esi, 2 ; si := 2
mov ax, [ebx+esi] ; ax := contenu de la 2ème case du tableau (10)
; (i.e. adresse mémoire du tableau, décalée de 2 octets)
mov dx, [ebx+4] ; dx := contenu de la 3ème case du tableau (34)
La taille du registre de destination déter-mine le nombre de bits lus en mémoire
62
![Page 126: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/126.jpg)
Modes d'adressageSpéci�cation de la taille d'une donnée
� Certaines instructions sont ambigües concernant la taille de la donnéemanipulée
� Exemple:mov [ebx], 5 ; écrit '5' à l'adresse mémoire contenue dans ebx
; mais sur combien d'octets ??
� Pour spéci�er la taille :mov byte [ebx], 5 ; écriture sur 1 octet
mov word [ebx], 5 ; écriture sur 2 octets
mov dword [ebx], 5 ; écriture sur 4 octets
63
![Page 127: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/127.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
64
![Page 128: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/128.jpg)
Les instructions
� Instruction de transferts de données / a�ectation(mov, etc.)
� Instructions arithmétiques(add, sub, dec, inc, neg, ...)
� Instructions logiques(and, or, etc.)
� Instructions de contrôle de �ot(jmp, loop, call, etc.)
65
![Page 129: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/129.jpg)
Les instructionsTransfert de données : mov
mov dest, source
� source : immédiat, registre général, adresse mémoire
� dest : registre général, adresse mémoire
� opérandes de même taille !
Exemples:
mov ebx, eax ; ebx := eax
mov eax, [edx] ; eax := 32 bits lus en mémoire à l'adresse contenue
; dans edx
mov word [ebx], 74 ; écrit de 74 sur 2 octets à l'adresse mémoire
; contenue dans ebx
66
![Page 130: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/130.jpg)
Les instructionsaddition, soustraction : add, sub, inc, dec
add x, y
� addition binaire, valable en signés et non-signés
� équivaut à x := x + y
� si le résultat �déborde� la représentation binaire, alors a�ectation duCARRY Flag (registre EFLAGS)Exemple :
� 11110011 + 10001000 = 101111011� 8 bits + 8 bits → 9 bits max : 8 bits + CARRY �ag (CF)
� Les autres �ags a�ectés :� SF = 0 si le bit de poids fort = 0� ZF = 1 si le résultat est nul� OF = 0 si le résultat peut être stocké dans la destination
67
![Page 131: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/131.jpg)
Les instructionsaddition, soustraction : add, sub, inc, dec
sub x, y
� Mêmes remarques que pour l'addition� Nombres négatifs = complément à deux
� pour calculer le complément à deux : neg x� attention aux �ags :
� 4+ (−1) = 3� 00000100 + 11111111 = [1]00000011 (3)� il faut ignorer le �ag CF !
68
![Page 132: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/132.jpg)
Les instructionsaddition, soustraction : add, sub, inc, dec
inc x
� équivaut à x := x + 1
dec x
� équivaut à x := x − 1
69
![Page 133: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/133.jpg)
Les instructionsmultiplication et division
mul x
� Multiplication de eax, ax, ou al par l'opérande x (zone mémoire ouregistre)
� Le résultat tient dans un nombre de bits égal à deux fois la taille del'opérande x
mul bl ; ax := al * bl
mul bx ; dx:ax := ax * bx
mul ecx ; edx:eax := eax * ecx
70
![Page 134: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/134.jpg)
Les instructionsmultiplication et division
div x
� Division de edx:eax, dx:ax, ou ax par l'opérande x (zone mémoire ouregistre)
� Le nombre de bits divisés est égal à deux fois la taille de l'opérande x
div bl ; al := ax / bl et ah := ax mod bl (reste)
div bx ; ax := dx:ax / bx et dx := dx:ax mod bx
div ecx ; eax := edx:eax / ecx et edx := edx:eax mod ecx
71
![Page 135: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/135.jpg)
Les instructionsmultiplication et division
Notes concernant mul x et div x :
� C'est la taille de l'opérande x qui spéci�e les registres impliqués� il faut parfois spéci�er la taille de l'opérande x� ex: mul byte [bx]
� Il n'est pas possible d'utiliser des constantes ou des valeurs immédiates
� Pour la multiplication/division avec des nombres négatifs, voir imul etidiv
72
![Page 136: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/136.jpg)
Les instructionsmultiplication et division
Notes concernant mul x et div x :
� Il n'est pas possible de diviser un octet par un octet, ou 2 octets par 2octetsExemple : un octet k divisé par un octet l
mov al, k
cbw ; complète le registre ah avec des zéros
mov bl, l
div bl ; divise ax par bl
� Instructions de conversion disponibles :� cbw (Convert Byte to Word) : étend à 16 bits l'octet situé en al, etplace le résultat en ax
� cwd (Convert Word to Double-word) : étend à 32 bits les 2 octetssitués en ax, et place le résultat dans dx:ax
� cwde (Convert Word to Extended Doubleword) : convertit ledouble-mot situé en eax et place le résultat dans edx:eax
73
![Page 137: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/137.jpg)
Les instructionsdécalages et rotations
Décalage des bits d'un registre vers la droite ou vers la gauche
� pour décoder des données bit à bit� pour diviser/multiplier rapidement par une puissance de 2
� décaler ax de n bits vers la gauche revient à le multiplier par 2n
� décaler ax de n bits vers la droite revient à le diviser par 2n
74
![Page 138: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/138.jpg)
Les instructionsdécalages et rotations
shl registre, nshr registre, n
� shl (Shift Left) : décale les bits du registre de n positions vers lagauche
� shr (Shift Right) : décale les bits du registre de n positions vers ladroite
� le bit de gauche (ou de droite pour shr) est transféré dans CF
� les bits introduits sont à zéro
shl ah, 1 CF 0
shr ah, 1 0 CF
75
![Page 139: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/139.jpg)
Les instructionsdécalages et rotations
� sal : décalage arithmétique gauche� identique à shl
� sar : décalage arithmétique droit� si bit de poids fort = 1, alors le bit inséré est 1� sinon, 0
76
![Page 140: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/140.jpg)
Les instructionsdécalages et rotations
� rol registre, 1 (Rotate Left)� rotation vers la gauche : le bit de poids fort passe à droite, et est aussicopié dans CF
� les autres bits sont décalés d'une position
CF
� ror registre, 1 (Rotate Right)� comme rol, mais à droite
CF
77
![Page 141: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/141.jpg)
Les instructionsdécalages et rotations
� rcl registre, 1 (Rotate Carry Left)� rotation vers la gauche en passant par CF
CF
� rcr registre, 1 (Rotate Carry Right)� comme rcl, mais à droite
CF
78
![Page 142: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/142.jpg)
Les instructionsOpérateurs logiques
� Opérateurs logiques : and, or, xor et not� calcul bit à bit : pas de propagation de retenue
� sous la forme :
or dest, source
� dest: registre ou emplacement mémoire� source: valeur immédiate, registre ou adresse mémoire
AND 0 1 OR 0 1 XOR 0 1 NOT 0 1
0 0 0 0 0 1 0 0 1 1 0
1 0 1 1 1 1 1 1 0
79
![Page 143: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/143.jpg)
Les instructionsOpérateurs logiques
Utilisations :� mise à zéro d'un registre:
� and ax, 0x0000� xor ax, ax
� forcer certains bits à 1:� or ax, 0x�00l'octet de poids fort de ax vaut 0x�, l'octet de poids faible resteinchangé
� forcer certains bits à 0:� and ax, 0x�00l'octet de poids faible vaut 00, l'octet de poids fort reste inchangé
� inverser certains bits:� xor ax, 0x�� ; inverse tous les bits de ax
80
![Page 144: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/144.jpg)
Les instructionsContrôle de �ot / branchements
� Le processeur : fonctionnement séquentiel� exécute une instruction en mémoire, puis la suivante� cycle de fonctionnement:
1 lire et décoder l'instruction à l'adresse EIP2 EIP ← EIP + taille de l'instruction
3 exécuter l'instruction
� le registre EIP contient l'adresse de la prochaine instruction à exécuter
� Comment� répéter une suite d'instruction ??� déclencher une action en fonction d'un test ??
81
![Page 145: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/145.jpg)
Les instructionsContrôle de �ot / branchements
Solution :� Utilisation d'une instruction de branchement ou saut
� on indique au processeur l'adresse de la prochaine instruction (modi�ela valeur de EIP)
� Deux catégories de sauts :� saut inconditionnel : toujours e�ectué� saut conditionnel : e�ectué seulement si une condition est véri�ée
82
![Page 146: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/146.jpg)
Les instructionsContrôle de �ot / branchements
jmp dest
� saut inconditionnel� dest : label, registre, ou adresse
� Exemple:
0x0100 B8 00 00 mov ax, 0 ; ax ← 0
0x0103 A3 01 40 mov [0x0140], ax ; écrit le contenu de ax à l'adresse 0x140
0x0106 EB FC jmp 0x0103 ; branchement à l'adresse 0x103
0x0107 B8 00 10 mov ax, 0x10 ; jamais exécuté !
83
![Page 147: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/147.jpg)
Les instructionsContrôle de �ot / branchements
saut conditionnel : jcc
� basé sur la valeur des indicateurs EFLAGS (ZF, CF, SF, OF)� pour comparer 2 valeurs : instruction cmp ax, bx
� compare les deux opérandes par soustraction� modi�e les indicateurs EFLAGS
Exemple :
cmp eax, 5
js titi ; saut à titi si SF = 1
jz tata ; saut à tata si ZF = 1
jae toto ; saut à toto si eax >= 5
84
![Page 148: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/148.jpg)
Les instructionsContrôle de �ot / branchements
Tests conditionnels:
Test Signé Non signé
= je je
6= jne jne
< jl/jnge jb/jnae
≤ jle/jng jbe/jna
> jg/jnle ja/jnbe
≥ jge/jnl jae/jnb
jz (jump if zero), jo (jump if over�ow), js (jump if sign)
85
![Page 149: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/149.jpg)
Les instructionsContrôle de �ot / branchements
Traduction du si alors sinon (if) :
si eax=1
alors
ebx ← 10
sinon
ecx ← 20
finsi
si_: cmp eax, 1
jne sinon
alors: mov ebx, 10
jmp finsi
sinon: mov ecx, 20
finsi: ...
86
![Page 150: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/150.jpg)
Les instructionsContrôle de �ot / branchements
Traduction du pour (for) :
pour i=0 jusqu'à i=10
...
finpour
mov ecx, 0
pour: cmp ecx, 10
je finpour
...
inc ecx
jmp pour
finpour: ...
87
![Page 151: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/151.jpg)
Les instructionsContrôle de �ot / branchements
Traduction du tantque (while) :
ebx ← 5
tant que ebx>0 faire
ebx ← ebx - 1
...
fin tant que
mov ebx, 5
tantque: cmp ebx, 0
jle fintantque
dec ebx
...
jmp tantque
fintantque: ...
88
![Page 152: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/152.jpg)
Les instructionsContrôle de �ot / branchements
Traduction du cas (switch) :
cas où
bx=1: ...
bx=2: ...
bx=3: ...
sinon: ...
fin cas
cas:
cas1: cmp bx, 1
jne cas2
...
jmp fincas
cas2: cmp bx, 2
jne cas3
...
jmp fincas
cas3: cmp bx, 3
jne sinon
...
jmp fincas
sinon: ...
fincas: ...
89
![Page 153: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/153.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
90
![Page 154: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/154.jpg)
La pile
� La pile est une structure (et une zone mémoire) qui sert à stockertemporairement des informations
� Utilisée lors d'appel de procédures (passage de paramètres)
� Fonctionne en mode LIFO (Last In First Out)
91
![Page 155: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/155.jpg)
La pile
0xFFFFFFFF ...
pile
tas
bss
data
text
0x00000000 ...
segment
de données
segment
de code
� la pile �grandit� vers le bas
� EBP = adresse du �fond� de la pile
� ESP = adresse du sommet de lapile (dernier élément empilé)
92
![Page 156: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/156.jpg)
La pileInstructions de gestion de pile
� push arg : empiler arg (reg., case mémoire, valeur)
� pop arg : dépiler dans arg (reg., case mémoire)
� empilement de mots (16bits) ou double-mots (32bits)
� c'est l'argument qui détermine la taille
� parfois nécessaire d'indiquer la taille
93
![Page 157: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/157.jpg)
La pileExemple
...
9
8
7
6
5
4
3
2
1
0
ESP = 10 mov ax, 5
mov ebx, 0x34
push ax
push ebx
pop ecx
pop [edx]
94
![Page 158: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/158.jpg)
La pileExemple
...
9 0x00
8 0x05
7
6
5
4
3
2
1
0
ESP = 8
mov ax, 5
mov ebx, 0x34
push ax
push ebx
pop ecx
pop [edx]
95
![Page 159: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/159.jpg)
La pileExemple
...
9 0x00
8 0x05
7 0x00
6 0x00
5 0x00
4 0x34
3
2
1
0
ESP = 4
mov ax, 5
mov ebx, 0x34
push ax
push ebx
pop ecx
pop [edx]
96
![Page 160: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/160.jpg)
La pileExemple
...
9 0x00
8 0x05
7
6
5
4
3
2
1
0
ESP = 8
mov ax, 5
mov ebx, 0x34
push ax
push ebx
pop ecx ; ecx ← 0x34
pop [edx]
97
![Page 161: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/161.jpg)
La pileExemple
...
9 0x00
8 0x05
7
6
5
4
3
2
1
0
ESP = 8
mov ax, 5
mov ebx, 0x34
push ax
push ebx
pop ecx ; ecx ← 0x34
pop [edx]
→ combien de cases dépilées?
98
![Page 162: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/162.jpg)
La pileExemple
...
9
8
7
6
5
4
3
2
1
0
ESP = 10 mov ax, 5
mov ebx, 0x34
push ax
push ebx
pop ecx ; ecx ← 0x34
pop word [edx]; [edx] ← 0x05
99
![Page 163: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/163.jpg)
Procédures
Une procédure
� est une suite d'instructions� possède un début et une �n
� début signalé par un label� �n signalée par l'instruction ret
Appel d'une procédure avec l'instruction call <label>Attention :
� il faut que la pile soit dans le même état à la �n de la procédurequ'avant son appel
� EIP doit être en sommet de pile (instruction ret)
100
![Page 164: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/164.jpg)
ProcéduresExemple
_start:...
call une_proc
...
...
une_proc:...
...
ret
EIPEIP est empilé (pour s'en �souvenir�)EIP ← @une_proc
EIPEIPEIPEIP
on dépile dans EIP(on récupère ainsi l'adresse de l'instruction qui suit le call)
EIP
101
![Page 165: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/165.jpg)
ProcéduresExemple
_start:...
call une_proc
...
...
une_proc:...
...
ret
EIP
EIP est empilé (pour s'en �souvenir�)EIP ← @une_proc
EIPEIPEIPEIP
on dépile dans EIP(on récupère ainsi l'adresse de l'instruction qui suit le call)
EIP
101
![Page 166: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/166.jpg)
ProcéduresExemple
_start:...
call une_proc
...
...
une_proc:...
...
ret
EIPEIP est empilé (pour s'en �souvenir�)EIP ← @une_proc
EIPEIPEIPEIP
on dépile dans EIP(on récupère ainsi l'adresse de l'instruction qui suit le call)
EIP
101
![Page 167: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/167.jpg)
ProcéduresExemple
_start:...
call une_proc
...
...
une_proc:...
...
ret
EIP
EIP est empilé (pour s'en �souvenir�)EIP ← @une_proc
EIP
EIPEIPEIP
on dépile dans EIP(on récupère ainsi l'adresse de l'instruction qui suit le call)
EIP
101
![Page 168: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/168.jpg)
ProcéduresExemple
_start:...
call une_proc
...
...
une_proc:...
...
ret
EIP
EIP est empilé (pour s'en �souvenir�)EIP ← @une_proc
EIP
EIP
EIPEIP
on dépile dans EIP(on récupère ainsi l'adresse de l'instruction qui suit le call)
EIP
101
![Page 169: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/169.jpg)
ProcéduresExemple
_start:...
call une_proc
...
...
une_proc:...
...
ret
EIP
EIP est empilé (pour s'en �souvenir�)EIP ← @une_proc
EIPEIP
EIP
EIP
on dépile dans EIP(on récupère ainsi l'adresse de l'instruction qui suit le call)
EIP
101
![Page 170: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/170.jpg)
ProcéduresExemple
_start:...
call une_proc
...
...
une_proc:...
...
ret
EIP
EIP est empilé (pour s'en �souvenir�)EIP ← @une_proc
EIPEIPEIP
EIP
on dépile dans EIP(on récupère ainsi l'adresse de l'instruction qui suit le call)
EIP
101
![Page 171: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/171.jpg)
ProcéduresExemple
_start:...
call une_proc
...
...
une_proc:...
...
ret
EIP
EIP est empilé (pour s'en �souvenir�)EIP ← @une_proc
EIPEIPEIP
EIP
on dépile dans EIP(on récupère ainsi l'adresse de l'instruction qui suit le call)
EIP
101
![Page 172: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/172.jpg)
ProcéduresExemple
_start:...
call une_proc
...
...
une_proc:...
...
ret
EIP
EIP est empilé (pour s'en �souvenir�)EIP ← @une_proc
EIPEIPEIPEIP
on dépile dans EIP(on récupère ainsi l'adresse de l'instruction qui suit le call)
EIP
101
![Page 173: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/173.jpg)
ProcéduresPassage de paramètres
Une procédure est identi�ée uniquement par un label
→ Comment passer des paramètres ?
Solutions :
� grâce à des variables (globales!) → NON !
� grâce aux registres → très limité� grâce à la pile → pas de limitation (sauf la taille du segment)
1 on empile les paramètres2 on appelle la procédure
102
![Page 174: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/174.jpg)
ProcéduresPassage de paramètres
Une procédure est identi�ée uniquement par un label
→ Comment passer des paramètres ?
Solutions :
� grâce à des variables (globales!) → NON !
� grâce aux registres → très limité� grâce à la pile → pas de limitation (sauf la taille du segment)
1 on empile les paramètres2 on appelle la procédure
102
![Page 175: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/175.jpg)
ProcéduresPassage de paramètres
Une procédure est identi�ée uniquement par un label
→ Comment passer des paramètres ?
Solutions :
� grâce à des variables (globales!) → NON !
� grâce aux registres → très limité
� grâce à la pile → pas de limitation (sauf la taille du segment)1 on empile les paramètres2 on appelle la procédure
102
![Page 176: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/176.jpg)
ProcéduresPassage de paramètres
Une procédure est identi�ée uniquement par un label
→ Comment passer des paramètres ?
Solutions :
� grâce à des variables (globales!) → NON !
� grâce aux registres → très limité� grâce à la pile → pas de limitation (sauf la taille du segment)
1 on empile les paramètres2 on appelle la procédure
102
![Page 177: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/177.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
ESP
ESP
ESP
_start:...
push word 5
call maproc
...
maproc :...
ret
Dans la procédure maproc,comment récupérer le paramètre 5 ?
103
![Page 178: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/178.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
ESP
ESP
ESP
_start:...
push word 5
call maproc
...
maproc :...
ret
Dans la procédure maproc,comment récupérer le paramètre 5 ?
103
![Page 179: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/179.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
ESP
ESP
ESP
_start:...
push word 5
call maproc
...
maproc :...
ret
Dans la procédure maproc,comment récupérer le paramètre 5 ?
103
![Page 180: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/180.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
ESP
ESP
ESP
_start:...
push word 5
call maproc
...
maproc :...
ret
Dans la procédure maproc,comment récupérer le paramètre 5 ?
103
![Page 181: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/181.jpg)
ProcéduresPassage de paramètres
� On ne peut lire les paramètres qu'au moyen du registre ebp (pointeurde base de la pile)
Solution:
→ On initialise ebp avec la valeur de esp(en ayant pris soin de sauvegarder avant la valeur de ebp)
104
![Page 182: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/182.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
26EBP
24
ESP
ESPEBP
EBP+8 ESP
_start:...
push word 5
call maproc
...
maproc :push ebp ; on mémorise ebp
mov ebp, esp
mov ax, [ebp+8]
...
pop ebp
ret
Aïe !� L'instruction ret s'attend à trouver EIP en sommet de pile !
� Une procédure doit rendre la pile et les registres dans l'état où elleles a trouvé
105
![Page 183: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/183.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
26EBP
24
ESP
ESP
EBP
EBP+8 ESP
_start:...
push word 5
call maproc
...
maproc :push ebp ; on mémorise ebp
mov ebp, esp
mov ax, [ebp+8]
...
pop ebp
ret
Aïe !� L'instruction ret s'attend à trouver EIP en sommet de pile !
� Une procédure doit rendre la pile et les registres dans l'état où elleles a trouvé
105
![Page 184: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/184.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
26EBP
24
ESP
ESPEBP
EBP+8 ESP
_start:...
push word 5
call maproc
...
maproc :push ebp ; on mémorise ebp
mov ebp, esp
mov ax, [ebp+8]
...
pop ebp
ret
Aïe !� L'instruction ret s'attend à trouver EIP en sommet de pile !
� Une procédure doit rendre la pile et les registres dans l'état où elleles a trouvé
105
![Page 185: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/185.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
26EBP
24
ESP
ESPEBP
EBP+8
ESP
_start:...
push word 5
call maproc
...
maproc :push ebp ; on mémorise ebp
mov ebp, esp
mov ax, [ebp+8]
...
pop ebp
ret
Aïe !� L'instruction ret s'attend à trouver EIP en sommet de pile !
� Une procédure doit rendre la pile et les registres dans l'état où elleles a trouvé
105
![Page 186: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/186.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
26EBP
24
ESP
ESPEBP
EBP+8
ESP
_start:...
push word 5
call maproc
...
maproc :push ebp ; on mémorise ebp
mov ebp, esp
mov ax, [ebp+8]
...
pop ebp
ret
Aïe !� L'instruction ret s'attend à trouver EIP en sommet de pile !
� Une procédure doit rendre la pile et les registres dans l'état où elleles a trouvé
105
![Page 187: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/187.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
26EBP
24
ESP
ESPEBP
EBP+8
ESP
_start:...
push word 5
call maproc
...
maproc :push ebp ; on mémorise ebp
mov ebp, esp
mov ax, [ebp+8]
...
pop ebp
ret
Aïe !� L'instruction ret s'attend à trouver EIP en sommet de pile !
� Une procédure doit rendre la pile et les registres dans l'état où elleles a trouvé
105
![Page 188: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/188.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
26EBP
24
ESP
ESPEBP
EBP+8
ESP
_start:...
push word 5
call maproc
...
maproc :push ebp ; on mémorise ebp
mov ebp, esp
mov ax, [ebp+8]
...
pop ebp
ret
Aïe !� L'instruction ret s'attend à trouver EIP en sommet de pile !
� Une procédure doit rendre la pile et les registres dans l'état où elleles a trouvé
105
![Page 189: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/189.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
26EBP
24
ESP
ESPEBP
EBP+8 ESP
_start:...
push word 5
call maproc
...
maproc :push ebp ; on mémorise ebp
mov ebp, esp
mov ax, [ebp+8]
...
pop ebp
ret
Aïe !� L'instruction ret s'attend à trouver EIP en sommet de pile !
� Une procédure doit rendre la pile et les registres dans l'état où elleles a trouvé
105
![Page 190: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/190.jpg)
ProcéduresPassage de paramètres
36pile
34
32 0x05
30EIP
28
26EBP
24
ESP
ESPEBP
EBP+8
ESP
_start:...
push word 5
call maproc
...
maproc :push ebp ; on mémorise ebp
mov ebp, esp
mov ax, [ebp+8]
...
pop ebp
ret
Aïe !� L'instruction ret s'attend à trouver EIP en sommet de pile !
� Une procédure doit rendre la pile et les registres dans l'état où elleles a trouvé
105
![Page 191: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/191.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
106
![Page 192: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/192.jpg)
Chaînes de caractères
� Déclaration :� texte1 db 'ceci est un texte', 0
� Tableau d'octets� Equivaut à :texte1 db 'c','e','c','i',' ','e','s','t',' ','u','n','
','t','e','x','t','e', 0
� Instructions spécialisées pour la manipulation de chaînes(plus généralement les tableaux)
107
![Page 193: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/193.jpg)
Chaînes de caractèresInstructions de tableaux/chaînes
Les instructions de tableaux/chaînes :� Utilisent des registres d'index dédiés
� esi (Source Index) : adresse source� edi (Destination Index) : adresse destination
� E�ectuent une opération impliquant généralement� eax (ou ax ou al) : registre qui contient la donnée
� Puis incrémentent ou décrémentent les registres d'index(traitement �caractère par caractère�)
108
![Page 194: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/194.jpg)
Chaînes de caractèresInstructions de tableaux/chaînes
� Sens de parcours de la chaîne/du tableau :� dé�ni par le �ag DF (Direction Flag)
� Instructions pour spéci�er le sens :� cld (Clear Direction �ag) : incrémentation esi/edi� std (Set Direction �ag) : décrémentation esi/edi
Ne pas oublier de commencer par cld ou std !
109
![Page 195: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/195.jpg)
Chaînes de caractèresInstructions de tableaux/chaînes
Lire en mémoire :� lodsb
� Remplit le registre al avec l'octet pointé par esi� Incrémente/décrémente esi
� lodsw : remplit ax, esi±2� lodsd : remplit eax, esi±4
� b=byte (1 octet), w=word (2 octets),d=double-word (4 octets)
110
![Page 196: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/196.jpg)
Chaînes de caractèresInstructions de tableaux/chaînes
Ecrire en mémoire :� stosb
� Le contenu de al est copié dans la case pointée par edi� Incrémente/décrémente edi
� stosw : contenu de ax, edi±2� stosd : contenu de eax, edi±4
111
![Page 197: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/197.jpg)
Chaînes de caractèresInstructions de tableaux/chaînes
Transfert d'un emplacement mémoire à un autre :� movsb
� l'octet de la zone mémoire pointée par esi est copié dans la zonemémoire pointée par edi
� Incrémente/décrémente esi et edi
� movsw : transfert de 2 octets, esi et edi ±2� movsd : transfert de 4 octets, esi et edi ±4
112
![Page 198: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/198.jpg)
Chaînes de caractèresInstructions de tableaux/chaînes
Le pré�xe d'instruction rep :
� Pour répéter une instruction de chaîne un certain nombre de fois
� Le nombre d'itérations est �xé par ecx
Exemple:
mov ecx, 5
rep movsb ; répète 5 fois l'instruction movsb
113
![Page 199: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/199.jpg)
Chaînes de caractèresInstructions de tableaux/chaînes
Pour récupérer la longueur d'une chaîne :
� au moment de la déclaration :
ch1 db 'un texte', 0
long_ch1 equ $ - ch1
� autre solution : {@var_suivante - @chaîne}
ch1 db 'un texte', 0
nb dd 22
...
mov ecx, nb
sub ecx, ch1
114
![Page 200: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/200.jpg)
Chaînes de caractèresInstructions de tableaux/chaînes
Comparaison de chaînes de caractères :� cmpsb
� compare l'octet en esi avec l'octet en edi� a�ecte le �ag ZF
� ZF = 1 si [esi] = [edi]� ZF = 0 sinon
� Incrémente/décrémente esi et edi
� cmpsw : compare 2 octets, esi et edi ±2� cmpsd : compare 4 octets, esi et edi ±4
115
![Page 201: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/201.jpg)
Chaînes de caractèresInstructions de tableaux/chaînes
Recherche d'un caractère dans une chaîne :� scasb
� compare le contenu du registre al avec l'octet en edi� a�ecte le �ag ZF
� ZF = 1 si al = [edi]� ZF = 0 sinon
� Incrémente/décrémente edi
� scasw : recherche ax, edi ±2� scasd : recherche eax, edi ±4
116
![Page 202: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/202.jpg)
Chaînes de caractèresInstructions de tableaux/chaînes
Variantes du pré�xe rep:
� repeRépète l'instruction qui suit tant que ZF est allumé, ou au maximumecx fois
� repneRépète l'instruction qui suit tant que ZF est éteint, ou au maximumecx fois
117
![Page 203: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/203.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
118
![Page 204: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/204.jpg)
Appels systèmesLe BIOS
� BIOS (Basic Input Output System) : partie de l'OS du plus bas niveau� opérations très primitives : lecture clavier, a�chage écran en modetexte, accès simpli�é lecteurs et disque dur, accès au port série etparallèle
� Le programme du BIOS se trouve en mémoire morte (ROM)
� Chaque modèle de PC est vendu avec une version du BIOS adaptée àsa con�guration matérielle
119
![Page 205: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/205.jpg)
Appels systèmesLes fonctions du BIOS
� Le BIOS ' librairie de fonctions� Chaque fonction exécute une tâche bien précise(par exemple, a�cher un caractère donné sur l'écran)
� L'appel de l'une de ces fonctions = appel système (syscall)� Fonctions du BIOS 6= procédures appelées avec call
� Le code du BIOS en ROM est non modi�able� Il a été prévu de pouvoir modi�er le comportement du BIOS en coursd'utilisation (ex: gestion d'un nouveau périphérique)
� Le BIOS étant di�érent d'un ordinateur à l'autre, les adresses desfonctions changent...
Comment ça marche ?
120
![Page 206: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/206.jpg)
Appels systèmesLes fonctions du BIOS
� Le BIOS ' librairie de fonctions� Chaque fonction exécute une tâche bien précise(par exemple, a�cher un caractère donné sur l'écran)
� L'appel de l'une de ces fonctions = appel système (syscall)� Fonctions du BIOS 6= procédures appelées avec call
� Le code du BIOS en ROM est non modi�able� Il a été prévu de pouvoir modi�er le comportement du BIOS en coursd'utilisation (ex: gestion d'un nouveau périphérique)
� Le BIOS étant di�érent d'un ordinateur à l'autre, les adresses desfonctions changent...
Comment ça marche ?
120
![Page 207: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/207.jpg)
Appels systèmesLes fonctions du BIOS
Solution :� Utilisation d'une table d'indirection : la table des vecteursd'interruptions
� table placée en RAM� contient les adresses (en ROM ou RAM) des fonctions du BIOS� implantée à partir de l'adresse 0x00000000 (première case mémoire)� initialisée par le BIOS lui-même au moment du démarrage
0x00000008 ...
0x00000004 adresse de la deuxième fonction du BIOS
0x00000000 adresse de la première fonction du BIOS
121
![Page 208: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/208.jpg)
Appels systèmesVecteurs d'interruptions
� Chaque élément de la table occupe 4 octets (adresse 32 bits)� table à 256 éléments (→ 1Ko)� exemple : si l'on sait que la fonction du BIOS qui a�che un caractèreest la 33ème, on va l'appeler en lisant la 33ème ligne de la table, puis enallant exécuter les instructions à l'adresse trouvée
...
0x00000084 0xF123A508 (car 4× 33 = 0x84)
...
� La table des vecteurs d'interruptions contient des valeurs di�érentespour chaque version de BIOS
� peut être modi�ée pour pointer sur du code en mémoire principale,modi�ant ainsi le BIOS existant
122
![Page 209: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/209.jpg)
Appels systèmesVecteurs d'interruptions
� Chaque élément de la table occupe 4 octets (adresse 32 bits)� table à 256 éléments (→ 1Ko)� exemple : si l'on sait que la fonction du BIOS qui a�che un caractèreest la 33ème, on va l'appeler en lisant la 33ème ligne de la table, puis enallant exécuter les instructions à l'adresse trouvée
...
0x00000084 0xF123A508 (car 4× 33 = 0x84)
...
� La table des vecteurs d'interruptions contient des valeurs di�érentespour chaque version de BIOS
� peut être modi�ée pour pointer sur du code en mémoire principale,modi�ant ainsi le BIOS existant
122
![Page 210: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/210.jpg)
Appels systèmesVecteurs d'interruptions
� Chaque élément de la table occupe 4 octets (adresse 32 bits)� table à 256 éléments (→ 1Ko)� exemple : si l'on sait que la fonction du BIOS qui a�che un caractèreest la 33ème, on va l'appeler en lisant la 33ème ligne de la table, puis enallant exécuter les instructions à l'adresse trouvée
...
0x00000084 0xF123A508 (car 4× 33 = 0x84)
...
� La table des vecteurs d'interruptions contient des valeurs di�érentespour chaque version de BIOS
� peut être modi�ée pour pointer sur du code en mémoire principale,modi�ant ainsi le BIOS existant
122
![Page 211: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/211.jpg)
Appels systèmesInterruptions
� L'Unité de Traitement exécute séquentiellement les instructions oue�ectue des sauts programmés (call, jmp)
� Il existe des situations où l'UT est �déroutée� de son fonctionnement(= interruptions)
� reset : signal envoyé au processeur pour un redémarrage� Interruptions physiques (externes) : appels d'autres périphériques� Exceptions (interruptions internes) : débordement de pile, dépassementde capacité mémoire, division par zéro, etc.
� Appels systèmes (interruptions logicielles) : appels du programmelui-même (int 0x80, etc.)
123
![Page 212: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/212.jpg)
Appels systèmesInterruptions
� L'Unité de Traitement exécute séquentiellement les instructions oue�ectue des sauts programmés (call, jmp)
� Il existe des situations où l'UT est �déroutée� de son fonctionnement(= interruptions)
� reset : signal envoyé au processeur pour un redémarrage� Interruptions physiques (externes) : appels d'autres périphériques� Exceptions (interruptions internes) : débordement de pile, dépassementde capacité mémoire, division par zéro, etc.
� Appels systèmes (interruptions logicielles) : appels du programmelui-même (int 0x80, etc.)
123
![Page 213: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/213.jpg)
Appels systèmesInterruptions logicielles
int n
� Permet d'appeler la nième fonction de la table des vecteursd'interruptions
� n est compris entre 0 et 255
� Similaire à l'instruction call� sauf que l'adresse de destination est donnée par la table des vecteursd'interruptions
� les indicateurs sont automatiquement sauvegardés sur la pile� l'adresse de retour complète est empilée (car le code de la fonction n'estpas nécessairement dans le même segment de code que le programme)
124
![Page 214: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/214.jpg)
Appels systèmes
� Le système Linux repose sur le BIOS :il appelle des fonctions du BIOS pour interagir avec le matériel
� Les fonctions de Linux s'utilisent comme celles du BIOS, via desvecteurs d'interruptions
� fonctions de plus haut niveau que celles du BIOS (e/s, ouvertures�chiers, etc.)
� Les fonctions de Linux s'appellent à l'aide du vecteur 0x80� La valeur du registre eax permet d'indiquer quelle est la fonction Linuxappelée :
mov eax, n ; n = numéro de la fonction Linux
int 0x80
125
![Page 215: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/215.jpg)
Appels systèmes
Fonction n°1 : exit (�n de programme)
eax : 1
ebx : code de sortie
126
![Page 216: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/216.jpg)
Appels systèmes
Fonction n°4 : write (ex: a�cher à l'écran)
eax : 4
ebx : descripteur de �chier (�ux de sortie standard : 1)
ecx : adresse du bu�er à écrire
edx : nombre d'octets à écrire
127
![Page 217: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/217.jpg)
Appels systèmes
Fonction n°3 : read (ex: saisie au clavier)
eax : 3
ebx : descripteur de �chier (�ux d'entrée standard : 0)
ecx : adresse du bu�er où les caractères seront stockés
edx : nombre d'octets à lire
128
![Page 218: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/218.jpg)
Appels systèmes
Fonction n°5 : open
eax : 5
ebx : adresse du tableau contenant le nom du �chier à ouvrir
ecx : bits d'accès (ex: 02 read-write)
edx : bits de permissions (00200 : le créateur est le propriétaire)
En retour, eax = descripteur de �chier
129
![Page 219: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/219.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
130
![Page 220: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/220.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
131
![Page 221: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/221.jpg)
Architectures avancées - Instructions
Au delà des instructions classiques, Intel/AMD/. . . ont introduitsdes instructions spécialisées
MMX (3DNow ! chez AMD)
� MMX (MultiMedia eXtension ou Matrix Math eXtension) est unjeu d'instructions pour le calcul matriciel (addition de 4 entiers sur 16bits en une seule instruction par ex) ;
� en 1996 avec le Pentium ;
� ajout de 8 registres sur 64 bits (MM0 à MM7) ;
� 57 instructions de calcul
SSE/SSE2/SSE3/SSE4
� SSE (Streaming SIMD Extensions)
� en 1999 avec le Pentium 3 ;
� 8 nouveaux registres sur 128 bits (XMM0 à XMM7)
� 70 instructions de calcul, de déplacement, de conversion, . . .132
![Page 222: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/222.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
133
![Page 223: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/223.jpg)
Architectures avancées - Mémoire cache
Le cache contient une copie des données lorsqu'elles sont coûteuses(en termes de temps d'accès)
L'utilisation des données peut être réalisée en accédant à la copie en cacheplutôt qu'en récupérant les données.
Fonctionnement
� 1. le processeur demande une information (une lecture, par exemple) ;� 2. le cache véri�e s'il possède cette information :
� s'il la possède, il la retransmet au processeur ;� s'il ne la possède pas, il la demande à la mémoire principale
� 3. le processeur traite la demande et renvoie la réponse au cache ;
� 4. le cache la stocke pour utilisation ultérieure et la retransmet auprocesseur au besoin.
134
![Page 224: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/224.jpg)
Architectures avancées - Mémoire cache
Pourquoi ça marche ?
Principes
� principe de localité spatiale : l'accès à une donnée située à une adresseX va probablement être suivi d'un accès à une zone tout proche de X ;
� principe de localité temporelle : l'accès à une zone mémoire à uninstant donné a de fortes chances de se reproduire dans la suiteimmédiate du programme.
135
![Page 225: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/225.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
136
![Page 226: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/226.jpg)
Architectures avancées
Comment est exécutée une instruction ?
� 1. Lire une instruction en mémoire (fetch).
� 2. Comprendre l'instruction (decode).
� 3. Sélectionner l'opération à e�ectuer dans "unité de traitement".
� 4. Charger les données si nécessaire (fetch operands).
� 5. E�ectuer le calcul (execute).
� 6. Ranger le résultat du calcul (store).
� 7. Aller à 1.
137
![Page 227: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/227.jpg)
Architectures avancées - Pipeline
� l'exécution d'une instruction est décomposée par l'unité de commandeen plusieurs phases "disjointes" ;
� chacune de ces phases sont prises en charge par un module ;
� ces modules travaillent en parallèle avec les autres.
On commence ainsi le traitement d'une nouvelle instruction avantque la précédente ne soit terminée
Recouvrement
On ne peut en e�et jamais être sûr qu'une instruction est terminée avantque la suivante ne s'exécute.
138
![Page 228: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/228.jpg)
Architectures avancées - Pipeline
� cycle mineur : temps nécessaire à une phase
� cycle majeur : temps total pour l'exécution d'une instruction
139
![Page 229: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/229.jpg)
Architectures avancées - Pipeline
Longueur du pipeline
� Pentium : 5
� Pentium 3 : 10
� Pentium 4 (Northwood) : 20
� Pentium 4 (Prescott) : 31
� AMD Athlon : 10
� AMD Athlon 64 : 12
140
![Page 230: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/230.jpg)
Architectures avancées - Pipeline
Les di�cultés
� les accès concurrents à la mémoire (recherche instruction et rechercheopérande simultanés),
� les branchements,� les di�érentes durées passées dans chaque étage :
� aspect structurel : certaines opérations sont plus longues que d'autres(une addition dure plus qu'un décalage),
� aspect dynamique : un accès à la mémoire mov ax, [mem] plus longqu'un transfert entre registres mov ax,bx
� les problèmes de dépendance (ou de précédence) : accès simultanésaux mêmes opérandes par des instructions di�érentes,
� les interruptions.
141
![Page 231: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/231.jpg)
Architectures avancées - Pipeline
La même instruction sur des opérandes di�érents
� IN : MOV AX, [mem]
� IN+1 : MOV AX, BX
� problème : il s'agit ici du problème plus général des accès à lamémoire.
� solution : introduire des délais pour synchroniser les instructions dupipeline sur la plus lente (qui sont les accès mémoire)
142
![Page 232: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/232.jpg)
Architectures avancées - Pipeline
Que faire dans le cas du déroutement vers l'adresse cible alors quel'unité fetch a déja été chercher l'instruction suivante ?
� I1 : CMP AX, 0� I2 : JMP J1� I3 : ADD BX, CX� . . .� In : J1: ADD AX, CX
� on appelle pénalité le nombre de cycles perdus si on suspend lepipeline jusqu'à obtention de l'instruction suivante.
� dans l'exemple, on doit annuler l'instruction I3143
![Page 233: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/233.jpg)
Architectures avancées - Pipeline
Une solution : prédiction dynamique
Branch target bu�er (BTB)
� utilisation d'un cache associatif utilisé par l'étage fetch :� pour les n dernières adresses d'instructions de branchement, l'adressede l'instruction suivante qui a été choisie.
� lorsque le pipeline décode une instruction de branchement :� il véri�e si elle n'est pas dans le BTB,� si elle y est, alors, le module fetch va chercher l'instruction suivante àl'adresse associée,
� sinon, le pipeline est suspendu pendant le cacul de l'instructionsuivante, puis l'adresse de ce branchement et celle de l'instructionsuivante e�ective sont rangées dans le BTB.
144
![Page 234: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/234.jpg)
Architectures avancées - Pipeline
Le problème de dépendance : une dépendance entre deuxinstructions Ii et Ii+k apparaissent lorsque l'instruction Ii+k travaillesur les mêmes données que Ii .Trois classes :
� RAW (Read After Write) : Ii+k utilise (lecture) un opérande mis àjour (écriture) par Ii et doit donc attendre la �n de Ii ,
� WAR (Write After Read) : Ii+k modi�e (écriture) un opérande qui estutilisé (lecture) par Ii ,
� WAW (Write After Write) : Ii+j et Ii mettent à jour (écriture) uneinformation commune dans un ordre qui doit être respecté.
Les solutions
� introduction de délais,
� solution logicielle : le compilateur se charge d'engendrer du codeévitant le con�it.
145
![Page 235: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/235.jpg)
Architectures avancées - Pipeline
Réarrangement du code : I = J + K + L
Première version
mov ax , [ j ]mov bx , [ k ]mov cx , [ l ]add bx , cxadd ax , bx
L'a�ectation du registre cx par le contenu de la variable l est réalisée troptardivement !
146
![Page 236: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/236.jpg)
Architectures avancées - Pipeline
Deuxième version
mov cx , [ l ]mov bx , [ k ]mov ax , [ j ]add bx , cxadd ax , bx
147
![Page 237: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/237.jpg)
Plan
1 Représentation de l'information
2 Architecture de l'ordinateur
3 Le processeur 80x86
4 Langage AssembleurStructure d'un programme assembleurAdressagesLes instructionsLa pile et les procéduresChaînes de caractèresAppels systèmes
5 Architectures avancéesInstructions avancéesMémoire cachePipelineRISC
148
![Page 238: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/238.jpg)
Architectures avancées - RISC
Une autre architecture de processeur : RISC
� de manière générale :� moins de 20 % instructions utilisées représentent plus de 80 % dutemps
� simplication des processeurs :� instructions courantes seulement� plus simples, mieux optimisées, plus e�caces� puce moins grosse, moins gourmandes en énergie, . . .
� processeurs à architecture RISC (Reduced Instruction Set Computer)
Conséquences
� instructions de taille �xe
� pipelines plus e�caces
� ... mais compilateur plus compliqué
149
![Page 239: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/239.jpg)
Architectures avancées - RISC
CISC� > 200 instructions
� taille variable des instructions
� instructions : les simples sont câblées mais les complexes sont sousforme de micro-code (nécessité d'un automate de séquencement)
� accès mémoire pour toutes instructions
� vitesse typique : une instruction dure entre 3 et 10 cycles
RISC� < 100 instructions
� format �xe
� instructions câblées
� accès mémoire pour instructions de chargement
� vitesse typique : 1 instruction dure 1 cycle
150
![Page 240: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/240.jpg)
Architectures avancées - RISC
CISC� avantages :
� développement plus simple� très répandu
� inconvénients :� puce plus grosse et plus compliquée� évolutions limitées� plusieurs cycles par instruction
RISC� avantages :
� puce plus petite� fréquence plus élevée� exécution plus rapide
� inconvénients :� compilateur complexe� programmes longs (nécessitent plus de mémoire)
151
![Page 241: Architecture et Langage Assembleur - LISICramat/downloads/archi.pdf · Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur](https://reader030.vdocuments.us/reader030/viewer/2022012323/5b99c59609d3f207308c929e/html5/thumbnails/241.jpg)
Architectures avancées - RISC
Quelques exemples de processeurs
� ARM7TDMI, Samsung ARM1176JZF : les processeurs des iPod,iPhone, . . . d'Apple
� la famille des Marvell XScale : embarqués dans des PDAs
� l'architecture Power d'IBM et de Freescale : consoles de jeux WII,Xbox 360, . . .
� PowerPC
� SPARC
152