Architecture et Langage Assembleur
|
|
|
- Maxence Benoît
- il y a 9 ans
- Total affichages :
Transcription
1 Architecture et Langage Assembleur Eric Ramat Université du Littoral - Côte d'opale Eric Ramat [email protected] ()Architecture et Langage Assembleur Université du Littoral - Côte d'opale / 152
2 2 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, 1 2 (examen + moyenne des notes TP)
3 3 Sommaire 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
4 4 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
5 Représentation de l'information Mémoire centrale instructions données Unité de contrôle Unité arithmétique et logique (ALU) Unités d'e/s Unité centrale de traitement (CPU)
6 Représentation de l'information Mémoire centrale instructions données Unité de contrôle Unité arithmétique et logique (ALU) Unités d'e/s Unité centrale de traitement (CPU) Conséquence de l'architecture de von Neumann: la mémoire contient données ET programmes mélangés!
7 6 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 à ˆ Conséquence: données et programmes mélangés en mémoire et codés en binaire!! Comment ça marche??
8 Représentation de l'information La Mémoire : ˆ tableau de cases ˆ chaque case contient 8 bits (1 octet) ˆ chaque case possède une adresse
9 8 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émoire ne contient que des bits (0 ou 1)!
10 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émoire ne contient que des bits (0 ou 1)! Tout coder sous forme d'entiers positifs en binaire
11 9 Représentation de l'information Représentation usuelle : 14 = Représentation positionnelle: ˆ choix d'une base b (10, 2,...) ˆ choix de b symboles Exemples: ˆ base 2 (0, 1) : = = ˆ base 3 (0, 1, 2): = = 14 10
12 Comment passer en base 10, 2, 3, etc? on utilise la division itérée Représentation de l'information Changer de base
13 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée 23 10
14 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée
15 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée
16 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée
17 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée
18 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée
19 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée
20 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
21 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
22 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
23 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
24 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
25 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
26 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
27 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
28 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
29 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
30 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
31 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
32 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
33 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
34 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
35 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
36 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = 23 10
37 Représentation de l'information Changer de base Comment passer en base 10, 2, 3, etc? on utilise la division itérée Résultat: 23 = =
38 11 Représentation et stockage en mémoire Cas 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
39 11 Représentation et stockage en mémoire Cas 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 Découpage de cette représentation en octets 3 Stockage de chaque octet consécutivement Représentation binaire de =
40 11 Représentation et stockage en mémoire Cas 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 Découpage de cette représentation en octets 3 Stockage de chaque octet consécutivement Représentation binaire de =
41 11 Représentation et stockage en mémoire Cas 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 Découpage de cette représentation en octets 3 Stockage de chaque octet consécutivement Mémoire 3 Représentation binaire de = x
42 Représentation et stockage en mémoire Cas des entiers signés Entiers non-signés: entiers positifs Entiers 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
43 Représentation et stockage en mémoire Cas des entiers signés Entiers non-signés: entiers positifs Entiers 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
44 Complément à 1: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés
45 Complément à 1: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 1 est obtenu en complémentant bit à bit sa valeur absolue avec 1
46 Complément à 1: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 1 est obtenu en complémentant bit à bit sa valeur absolue avec 1 Exemple: représentation de 23 10?
47 Complément à 1: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 1 est obtenu en complémentant bit à bit sa valeur absolue avec 1 Exemple: représentation de 23 10? ˆ = =
48 13 Complément à 1: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 1 est obtenu en complémentant bit à bit sa valeur absolue avec 1 Exemple: représentation de 23 10? ˆ = = ˆ Complément à 1 de : (inversion des bits) =
49 13 Complément à 1: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 1 est obtenu en complémentant bit à bit sa valeur absolue avec 1 Exemple: représentation de 23 10? ˆ = = ˆ Complément à 1 de : (inversion des bits) =
50 13 Complément à 1: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 1 est obtenu en complémentant bit à bit sa valeur absolue avec 1 Exemple: représentation de 23 10? ˆ = = ˆ Complément à 1 de : (inversion des bits) =
51 13 Complément à 1: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 1 est obtenu en complémentant bit à bit sa valeur absolue avec 1 Exemple: représentation de 23 10? ˆ = = ˆ Complément à 1 de : (inversion des bits) = Deux représentations pour 0: et Plage de nombres représentés sur 8 bits: 127 à +127
52 Complément à 2: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés
53 14 Complément à 2: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 2 est obtenu en ajoutant 1 au complément à 1 de sa valeur absolue (et inversement)
54 14 Complément à 2: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 2 est obtenu en ajoutant 1 au complément à 1 de sa valeur absolue (et inversement) Exemple: représentation de 23 10?
55 14 Complément à 2: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 2 est obtenu en ajoutant 1 au complément à 1 de sa valeur absolue (et inversement) Exemple: représentation de 23 10? ˆ = =
56 14 Complément à 2: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 2 est obtenu en ajoutant 1 au complément à 1 de sa valeur absolue (et inversement) Exemple: représentation de 23 10? ˆ = = ˆ Complément à 1 de =
57 14 Complément à 2: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 2 est obtenu en ajoutant 1 au complément à 1 de sa valeur absolue (et inversement) Exemple: représentation de 23 10? ˆ = = ˆ Complément à 1 de = ˆ Ajout de 1: =
58 14 Complément à 2: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 2 est obtenu en ajoutant 1 au complément à 1 de sa valeur absolue (et inversement) Exemple: représentation de 23 10? ˆ = = ˆ Complément à 1 de = ˆ Ajout de 1: =
59 14 Complément à 2: Le bit de poids fort correspond au signe: ˆ 0 = positif ˆ 1 = négatif Représentation et stockage en mémoire Cas des entiers signés Le complément à 2 est obtenu en ajoutant 1 au complément à 1 de sa valeur absolue (et inversement) Exemple: représentation de 23 10? ˆ = = ˆ Complément à 1 de = ˆ Ajout de 1: = Une seule représentation pour 0: Plage de nombres représentés sur 8 bits: 128 à +127
60 15 Représentation et stockage en mémoire Cas 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ésenter tous les caractères de toutes les langues
61 16 Exemple: Table ASCII restreinte Représentation et stockage en mémoire Cas des caractères
62 17 Représentation et stockage en mémoire Cas des nombres réels Non traité dans ce cours. Voir la norme IEEE 754 pour la représentation en binaire des ottants.
63 18 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
64 19 Représentation et stockage en mémoire Ordre d' empilement lorsque stockage sur plusieurs octets? Exemple: =
65 19 Représentation et stockage en mémoire Ordre d' empilement lorsque stockage sur plusieurs octets? Exemple: =
66 19 Représentation et stockage en mémoire Ordre d' empilement lorsque stockage sur plusieurs octets? Exemple: = C9 63
67 19 Représentation et stockage en mémoire Ordre d' empilement lorsque stockage sur plusieurs octets? Exemple: = C9 63 0x x x x c9 0x x 0x little-endian lsb (Less Signicant Bit) à l'adresse la plus petite
68 Représentation et stockage en mémoire Ordre d' empilement lorsque stockage sur plusieurs octets? Exemple: = C9 63 0x x x x c9 0x x 0x little-endian lsb (Less Signicant Bit) à l'adresse la plus petite 0x x x 0x c9 0x x x big-endian msb (Most Signicant Bit) à l'adresse la plus petite
69 Représentation et stockage en mémoire Ordre d' empilement lorsque stockage sur plusieurs octets? Exemple: = C9 63 0x x x x c9 0x x 0x little-endian lsb (Less Signicant Bit) à l'adresse la plus petite 0x x x 0x c9 0x Architecture 03 ix86: 0x adressage 0x par octet little endian big-endian msb (Most Signicant Bit) à l'adresse la plus petite
70 Représentation et stockage en mémoire Note sur le passage de base 2 en base 16 et inversement: Base 2:
71 Représentation et stockage en mémoire Note sur le passage de base 2 en base 16 et inversement: Base 2:
72 Représentation et stockage en mémoire Note sur le passage de base 2 en base 16 et inversement: Base 2: Base 16: 4 F 3
73 Représentation et stockage en mémoire Note sur le passage de base 2 en base 16 et inversement: Base 2: Base 16: 4 F 3 B2 B10 B F E D C B A
74 21 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
75 22 Fonctionnement de l'ordinateur Retour sur l'architecture de von Neumann Mémoire centrale instructions données Unité de contrôle Unité arithmétique et logique (ALU) Unités d'e/s Unité centrale de traitement (CPU)
76 22 Fonctionnement de l'ordinateur Retour sur l'architecture de von Neumann Mémoire centrale instructions données Unité de contrôle Unité arithmétique et logique (ALU) Unités d'e/s Unité centrale de traitement (CPU)
77 23 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
78 24 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.
79 25 Le processeur 80x86 x86 : famille de microprocesseurs compatibles avec le jeu d'instructions de l'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 bus d'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écuter sur un 386
80 25 Le processeur 80x86 x86 : famille de microprocesseurs compatibles avec le jeu d'instructions de l'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 bus d'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écuter sur un 386 NB : en TP, on utilisera un assembleur 8086 sous linux, et on exécutera le programme sur des Pentium
81 Le processeur 80x86 Architecture interne 26
82 27 Le processeur 80x86 Architecture 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
83 Le processeur 80x86 Cycle de fonctionnement de l'unité de contrôle Décodage de l'instruction Lecture des registres 1 2 Récupération de l'instruction courante en mémoire Lecture des opérandes en mémoire 5 3 Ecriture du résultat en mémoire 4 Exécution de l'instruction
84 29 Le processeur 80x86 La mémoire Sur une architecture 80x86, 32 bits : modèle mode réel, modèle segmenté
85 30 Le processeur 80x86 Les 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)
86 31 Le processeur 80x86 Les 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 31 0 EIP
87 32 Le processeur 80x86 Les 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
88 Le processeur 80x86 Les 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)
89 34 Le processeur 80x86 Les 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 : 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
90 35 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 ˆ Overow Flag OF : 0 si le résultat peut être stocké dans l'opérande destination ˆ Indicateur DF : sens de l'auto-incrémentation (manipulation de chaînes) ˆ Indicateurs système
91 36 Le processeur 80x86 Les instructions machine ˆ Chaque processeur possède son propre jeu d'instructions machine directement compréhensibles ˆ Chaque instruction possède un identiant numérique (opcode) ˆ Programmation directe du processeur avec les instructions machines: ˆ dicile et long ˆ quasi-impossible à comprendre
92 Le processeur 80x86 Les instructions machine Exemple de programme en langage machine: A A Ce programme additionne le contenu de deux cases mémoires et range le résultat dans une troisième...
93 Le processeur 80x86 Les instructions machine Exemple de programme en langage machine: A A Ce programme additionne le contenu de deux cases mémoires et range le résultat dans une troisième... opcode Symbole octets A1 MOV AX, [adr] 3 AX contenu de l'adresse adr ADD AX, [adr] 4 AX AX + contenu de l'adresse adr A3 MOV [adr], AX 3 range AX à l'adresse adr
94 Le processeur 80x86 Les instructions machine Exemple de programme en langage machine: A A Ce programme additionne le contenu de deux cases mémoires et range le résultat dans une troisième... opcode Symbole octets A1 MOV AX, [adr] 3 AX contenu de l'adresse adr ADD AX, [adr] 4 AX AX + contenu de l'adresse adr A3 MOV [adr], AX 3 range AX à l'adresse adr Transcription du programme : A MOV AX, [0110] Charge AX avec le contenu de ADD AX, [0112] Ajouter le contenu de 0112 à AX A MOV [01 14], AX Ranger AX à l'adresse 0114
95 Le processeur 80x86 Les instructions machine ˆ Programmation directe du processeur avec les instructions machines: ˆ dicile et long ˆ quasi-impossible à comprendre
96 Le processeur 80x86 Les instructions machine ˆ Programmation directe du processeur avec les instructions machines: ˆ dicile et long ˆ quasi-impossible à comprendre Utilisation d'un langage de plus haut niveau : l'assembleur
97 39 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
98 40 Langage Assembleur Dénition Langage haut niveau (Ada, C++, etc.) c:= c + 3;... Langage machine Binaire en mémoire qui forme un exécutable
99 40 Langage Assembleur Dénition Langage haut niveau (Ada, C++, etc.) c:= c + 3;...? Langage machine Binaire en mémoire qui forme un exécutable
100 40 Langage Assembleur Dénition Langage haut niveau (Ada, C++, etc.) c:= c + 3;... Langage d'assemblage Mnémoniques associées au langage machine mov eax, [esi] add eax, 3... Langage machine Binaire en mémoire qui forme un exécutable
101 40 Langage Assembleur Dénition Langage haut niveau (Ada, C++, etc.) c:= c + 3;... Compilation Langage d'assemblage Mnémoniques associées au langage machine mov eax, [esi] add eax, 3... Langage machine Binaire en mémoire qui forme un exécutable
102 40 Langage Assembleur Dénition Langage haut niveau (Ada, C++, etc.) c:= c + 3;... Compilation Langage d'assemblage Mnémoniques associées au langage machine mov eax, [esi] add eax, 3... Assemblage Langage machine Binaire en mémoire qui forme un exécutable
103 40 Langage Assembleur Dénition Langage haut niveau (Ada, C++, etc.) c:= c + 3;... Compilation Langage d'assemblage Mnémoniques associées au langage machine mov eax, [esi] add eax, 3... Assemblage Langage machine Binaire en mémoire qui forme un exécutable
104 41 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é
105 42 Langage Assembleur Pourquoi apprendre l'assembleur? ˆ Mieux comprendre la façon dont fonctionne un ordinateur ˆ Mieux comprendre comment fonctionnent compilateurs et langages haut niveau
106 43 Langage Assembleur Procé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) assemblage nasm -f elf hello.asm hello.o (chier objet) hello (chier exécutable) debuggage gdb hello édition de liens ld hello.o -o hello
107 44 Langage Assembleur gdb: debugger sous Linux Quelques commandes utiles : gdb = outil indispensable de debuggage! ˆ Lancement : gdb <nom prg> ˆ break <label> : dénition d'un point d'arrêt (parmi les étiquettes du code 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
108 45 Langage Assembleur gdb: 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 code assembleur selon le type Intel ˆ disassemble <label>: ache le code assembleur à partir de l'étiquette jusqu'à la suivante
109 46 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
110 47 Structure d'un programme assembleur Un premier programme [BITS 32] section.data msg: db 'Hello world', 0xa entête notion de section déclaration de variable et initialisation section.text global _start _start: mov ebx, 0 mov eax, 1 int 0x80 nom obligatoire du pg principal début du programme
111 48 Structure d'un programme assembleur ˆ Entête ([BITS 16] ou [BITS 32]) : les instructions seront interprétées par 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 ;
112 Structure d'un programme assembleur Format général d'une instruction [label:] mnémonique arg 1, arg 2, arg 3 ˆ label ou étiquette : identicateur suivi d'un ':' identie une position en mémoire (code ou données) ˆ mnémonique: nom correspondant à l'opcode de l'opérateur (l'opération à réaliser) ˆ arg i : entre 0 et 3 opérandes (les données manipulées) ˆ notation Intel : destination = opérande de gauche
113 50 Structure d'un programme assembleur Format général d'une instruction ˆ Syntaxe d'un label : ˆ mot composé de lettres, chires, _ $ ~.? ˆ commançant par une lettre, un chire, un point, `_' ou `?' ˆ Constantes numériques: ˆ entiers positifs postxé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'
114 Structure d'un programme assembleur Déclaration de variables Déclaration de variables initialisées (dans la section.data) : <label> : d<type> <valeur> Exemples: 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 Types octet db (byte) mot dw (word) double-mot dd (double-word) quad-mot dq (quad-word) la 2 ème lettre indique la taille à réserver
115 52 Structure d'un programme assembleur Déclaration de variables Déclaration de variables non initialisées (dans la section.bss) : <label> : res<type> <valeur> Exemples: section.bss x : resw tab : resb 32 ; réservation d'un mot ; réservation d'un tableau de 32 octets
116 Déclaration de constantes (pas de `:') : Exemple : Structure d'un programme assembleur Déclaration de constantes <label> equ <valeur> max equ 15 Constantes spéciales : ˆ $ : adresse courante dans la déclaration des variables (segment de données) ˆ $$ : adresse du début du segment courant Exemple d'utilisation: chaine : db 'hello' taille equ $ - chaine
117 54 Structure d'un programme assembleur Type d'opérandes d'une instruction Modes d'adressage Une instruction spécie : ˆ 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 son adresse 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)
118 55 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
119 56 Modes d'adressage Illustration avec l'instruction de transfert ˆ avec mov <op 1 >, <op 2 > ˆ op 1 : la destination (registre, adresse mémoire) ˆ op 2 : la donnée à transférer (valeur, registre, adresse, etc.) ˆ action : le contenu de op 2 est transféré dans op 1
120 57 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 (op 1 ) détermine le nombre de bits impliqué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)
121 58 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)
122 59 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 en mé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
123 60 Modes d'adressage 4. L'adressage indirect : mov eax, [ebx] ˆ L'adresse de la donnée est contenue dans un registre (ebx, ebp, esi, ou edi) ˆ La taille du registre destination détermine le nombre de bits lus en mémoire Exemples d'adressages basés, ou indexés simples : mov ebx, 0x2000 ; ebx := 0x2000 mov eax, [ebx] mov dx, [esi] mov dx, [esi+2] (adresse mémoire) ; eax := contenu de la zone mémoire située à l'adresse 0x2000 ; dx := 16 bits situés dans la zone mémoire ; dont l'adresse est contenue dans esi
124 Modes d'adressage 4. L'adressage indirect : Oset = base + (index*echelle) + déplacement Oset = EAX EBX ECX EDX ESP EBP ESI EDI + EAX EBX ECX EDX EBP ESI EDI rien 8bits 16bits 32bits
125 62 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étermine le nombre de bits lus en mémoire
126 63 Modes d'adressage Spécication de la taille d'une donnée ˆ Certaines instructions sont ambigües concernant la taille de la donnée manipulée ˆ Exemple: mov [ebx], 5 ; écrit '5' à l'adresse mémoire contenue dans ebx ; mais sur combien d'octets?? ˆ Pour spécier la taille : mov byte [ebx], 5 mov word [ebx], 5 mov dword [ebx], 5 ; écriture sur 1 octet ; écriture sur 2 octets ; écriture sur 4 octets
127 64 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
128 65 Les instructions ˆ Instruction de transferts de données / aectation (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.)
129 66 Les instructions Transfert 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 mov eax, [edx] mov word [ebx], 74 ; ebx := eax ; eax := 32 bits lus en mémoire à l'adresse contenue ; dans edx ; écrit de 74 sur 2 octets à l'adresse mémoire ; contenue dans ebx
130 67 Les instructions addition, 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 aectation du CARRY Flag (registre EFLAGS) Exemple : ˆ = ˆ 8 bits + 8 bits 9 bits max : 8 bits + CARRY ag (CF) ˆ Les autres ags aecté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
131 Les instructions addition, 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 ˆ = [1] (3) ˆ il faut ignorer le ag CF!
132 69 Les instructions addition, soustraction : add, sub, inc, dec inc x ˆ équivaut à x := x + 1 dec x ˆ équivaut à x := x 1
133 70 Les instructions multiplication et division mul x ˆ Multiplication de eax, ax, ou al par l'opérande x (zone mémoire ou registre) ˆ Le résultat tient dans un nombre de bits égal à deux fois la taille de l'opérande x mul bl mul bx mul ecx ; ax := al * bl ; dx:ax := ax * bx ; edx:eax := eax * ecx
134 71 Les instructions multiplication et division div x ˆ Division de edx:eax, dx:ax, ou ax par l'opérande x (zone mémoire ou registre) ˆ 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
135 72 Les instructions multiplication et division Notes concernant mul x et div x : ˆ C'est la taille de l'opérande x qui spécie les registres impliqués ˆ il faut parfois spécier 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 et idiv
136 Les instructions multiplication 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 2 octets Exemple : un octet k divisé par un octet l mov al, k cbw mov bl, l div bl ; complète le registre ah avec des zéros ; divise ax par bl ˆ Instructions de conversion disponibles : ˆ cbw (Convert Byte to Word) : étend à 16 bits l'octet situé en al, et place le résultat en ax ˆ cwd (Convert Word to Double-word) : étend à 32 bits les 2 octets situés en ax, et place le résultat dans dx:ax ˆ cwde (Convert Word to Extended Doubleword) : convertit le double-mot situé en eax et place le résultat dans edx:eax
137 74 Les instructions dé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 2 n ˆ décaler ax de n bits vers la droite revient à le diviser par 2 n
138 75 Les instructions décalages et rotations shl registre, n shr registre, n ˆ shl (Shift Left) : décale les bits du registre de n positions vers la gauche ˆ shr (Shift Right) : décale les bits du registre de n positions vers la droite ˆ 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
139 Les instructions dé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
140 77 Les instructions décalages et rotations ˆ rol registre, 1 (Rotate Left) ˆ rotation vers la gauche : le bit de poids fort passe à droite, et est aussi copié dans CF ˆ les autres bits sont décalés d'une position CF ˆ ror registre, 1 (Rotate Right) ˆ comme rol, mais à droite CF
141 78 Les instructions dé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
142 79 Les instructions Opé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
143 80 Les instructions Opérateurs logiques Utilisations : ˆ mise à zéro d'un registre: ˆ and ax, 0x0000 ˆ xor ax, ax ˆ forcer certains bits à 1: ˆ or ax, 0x00 l'octet de poids fort de ax vaut 0x, l'octet de poids faible reste inchangé ˆ forcer certains bits à 0: ˆ and ax, 0x00 l'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
144 Les instructions Contrô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 EIP 2 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??
145 82 Les instructions Contrôle de ot / branchements Solution : ˆ Utilisation d'une instruction de branchement ou saut ˆ on indique au processeur l'adresse de la prochaine instruction (modie la valeur de EIP) ˆ Deux catégories de sauts : ˆ saut inconditionnel : toujours eectué ˆ saut conditionnel : eectué seulement si une condition est vériée
146 83 Les instructions Contrôle de ot / branchements jmp dest ˆ saut inconditionnel ˆ dest : label, registre, ou adresse ˆ Exemple: 0x0100 B mov ax, 0 ; ax 0 0x0103 A mov [0x0140], ax ; écrit le contenu de ax à l'adresse 0x140 0x0106 EB FC jmp 0x0103 ; branchement à l'adresse 0x103 0x0107 B mov ax, 0x10 ; jamais exécuté!
147 84 Les instructions Contrô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 Exemple : ˆ compare les deux opérandes par soustraction ˆ modie les indicateurs EFLAGS cmp eax, 5 js titi ; saut à titi si SF = 1 jz tata ; saut à tata si ZF = 1 jae toto ; saut à toto si eax >= 5
148 85 Les instructions Contrôle de ot / branchements Tests conditionnels: Test Signé Non signé = je je 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 overow), js (jump if sign)
149 86 Les instructions Contrô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:...
150 87 Les instructions Contrô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:...
151 88 Les instructions Contrôle de ot / branchements Traduction du tantque (while) : ebx 5 tant que ebx>0 faire ebx ebx fin tant que mov ebx, 5 tantque: cmp ebx, 0 jle fintantque dec ebx... jmp tantque fintantque:...
152 89 Les instructions Contrô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:...
153 90 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
154 91 La pile ˆ La pile est une structure (et une zone mémoire) qui sert à stocker temporairement des informations ˆ Utilisée lors d'appel de procédures (passage de paramètres) ˆ Fonctionne en mode LIFO (Last In First Out)
155 92 La pile 0xFFFFFFFF... pile tas bss data segment de données ˆ la pile grandit vers le bas ˆ EBP = adresse du fond de la pile ˆ ESP = adresse du sommet de la pile (dernier élément empilé) text segment de code 0x
156 93 La pile Instructions 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
157 La pile Exemple ESP = 10 mov ax, 5 mov ebx, 0x34 push ax push ebx pop ecx pop [edx]
158 La pile Exemple x00 8 0x ESP = 8 mov ax, 5 mov ebx, 0x34 push ax push ebx pop ecx pop [edx]
159 La pile Exemple x00 8 0x05 7 0x00 6 0x00 5 0x00 4 0x ESP = 4 mov ax, 5 mov ebx, 0x34 push ax push ebx pop ecx pop [edx]
160 La pile Exemple x00 8 0x ESP = 8 mov ax, 5 mov ebx, 0x34 push ax push ebx pop ecx ; ecx 0x34 pop [edx]
161 La pile Exemple x00 8 0x ESP = 8 mov ax, 5 mov ebx, 0x34 push ax push ebx pop ecx ; ecx 0x34 pop [edx]
162 La pile Exemple ESP = 10 mov ax, 5 mov ebx, 0x34 push ax push ebx pop ecx ; ecx 0x34 pop word [edx]; [edx] 0x05
163 100 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édure qu'avant son appel ˆ EIP doit être en sommet de pile (instruction ret)
164 101 Procédures Exemple _start:... call une_proc une_proc: ret
165 101 Procédures Exemple EIP _start:... call une_proc une_proc: ret
166 101 Procédures Exemple EIP _start:... call une_proc une_proc: ret EIP est empilé (pour s'en souvenir)
167 101 Procédures Exemple EIP _start:... call une_proc une_proc: ret EIP est empilé (pour s'en souvenir)
168 101 Procédures Exemple EIP _start:... call une_proc une_proc: ret EIP est empilé (pour s'en souvenir)
169 101 Procédures Exemple EIP _start:... call une_proc une_proc: ret EIP est empilé (pour s'en souvenir)
170 101 Procédures Exemple EIP _start:... call une_proc une_proc: ret EIP est empilé (pour s'en souvenir)
171 101 Procédures Exemple EIP _start:... call une_proc une_proc: ret EIP est empilé (pour s'en souvenir) on dépile dans EIP (on récupère ainsi l'adresse de l'instruction qui suit le call)
172 101 Procédures Exemple EIP _start:... call une_proc une_proc: ret EIP est empilé (pour s'en souvenir) on dépile dans EIP (on récupère ainsi l'adresse de l'instruction qui suit le call)
173 Procédures Passage de paramètres Une procédure est identiée uniquement par un label Comment passer des paramètres?
174 Procédures Passage 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!
175 102 Procédures Passage 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é
176 102 Procédures Passage de paramètres Une procédure est identiée uniquement par un label Solutions : Comment passer des paramètres? ˆ 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ètres 2 on appelle la procédure
177 103 Procédures Passage de paramètres pile ESP _start:... push word 5 call maproc... maproc :... ret
178 103 Procédures Passage de paramètres 36 pile x05 ESP _start:... push word 5 call maproc... maproc :... ret
179 103 Procédures Passage de paramètres 36 pile x05 30 EIP 28 ESP _start:... push word 5 call maproc... maproc :... ret
180 103 Procédures Passage de paramètres 36 pile x05 30 EIP 28 ESP _start:... push word 5 call maproc... maproc :... ret Dans la procédure maproc, comment récupérer le paramètre 5?
181 104 Procédures Passage de paramètres ˆ On ne peut lire les paramètres qu'au moyen du registre ebp (pointeur de base de la pile) Solution: On initialise ebp avec la valeur de esp (en ayant pris soin de sauvegarder avant la valeur de ebp)
182 105 Procédures Passage de paramètres 36 pile x05 30 EIP 28 ESP _start:... push word 5 call maproc... maproc : push ebp ; on mémorise ebp mov ebp, esp mov ax, [ebp+8]... ret
183 105 Procédures Passage de paramètres 36 pile x05 30 EIP EBP 24 ESP _start:... push word 5 call maproc... maproc : push ebp ; on mémorise ebp mov ebp, esp mov ax, [ebp+8]... ret
184 105 Procédures Passage de paramètres P 36 pile x05 30 EIP EBP 24 ESP _start:... push word 5 call maproc... maproc : push ebp ; on mémorise ebp mov ebp, esp mov ax, [ebp+8]... ret
185 105 Procédures Passage de paramètres +8 P 36 pile x05 30 EIP EBP 24 ESP _start:... push word 5 call maproc... maproc : push ebp ; on mémorise ebp mov ebp, esp mov ax, [ebp+8]... ret
186 105 Procédures Passage de paramètres +8 P 36 pile x05 30 EIP EBP 24 ESP _start:... push word 5 call maproc... maproc : push ebp ; on mémorise ebp mov ebp, esp mov ax, [ebp+8]... ret
187 105 Procédures Passage de paramètres +8 P pile 32 0x EIP EBP ESP Aïe! _start:... push word 5 call maproc... maproc : push ebp ; on mémorise ebp mov ebp, esp mov ax, [ebp+8]... ˆ L'instruction ret s'attend à trouver EIP en sommet de pile! ret ˆ Une procédure doit rendre la pile et les registres dans l'état où elle les a trouvé
188 105 Procédures Passage de paramètres +8 P 36 pile x05 30 EIP EBP 24 ESP _start:... push word 5 call maproc... maproc : push ebp ; on mémorise ebp mov ebp, esp mov ax, [ebp+8]... pop ebp ret
189 105 Procédures Passage de paramètres 36 pile x05 30 EIP 28 ESP _start:... push word 5 call maproc... maproc : push ebp ; on mémorise ebp mov ebp, esp mov ax, [ebp+8]... pop ebp ret
190 105 Procédures Passage de paramètres 36 pile x05 ESP _start:... push word 5 call maproc... maproc : push ebp ; on mémorise ebp mov ebp, esp mov ax, [ebp+8]... pop ebp ret
191 106 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
192 107 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)
193 108 Chaînes de caractères Instructions 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 ˆ Eectuent 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)
194 109 Chaînes de caractères Instructions de tableaux/chaînes ˆ Sens de parcours de la chaîne/du tableau : ˆ déni par le ag DF (Direction Flag) ˆ Instructions pour spécier 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!
195 110 Chaînes de caractères Instructions 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)
196 111 Chaînes de caractères Instructions 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
197 112 Chaînes de caractères Instructions 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 zone mé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
198 113 Chaînes de caractères Instructions 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
199 Chaînes de caractères Instructions 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
200 115 Chaînes de caractères Instructions de tableaux/chaînes Comparaison de chaînes de caractères : ˆ cmpsb ˆ compare l'octet en esi avec l'octet en edi ˆ aecte 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
201 116 Chaînes de caractères Instructions 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 ˆ aecte 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
202 117 Chaînes de caractères Instructions de tableaux/chaînes Variantes du préxe rep: ˆ repe Répète l'instruction qui suit tant que ZF est allumé, ou au maximum ecx fois ˆ repne Répète l'instruction qui suit tant que ZF est éteint, ou au maximum ecx fois
203 118 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
204 119 Appels systèmes Le BIOS ˆ BIOS (Basic Input Output System) : partie de l'os du plus bas niveau ˆ opérations très primitives : lecture clavier, achage écran en mode texte, accès simplié lecteurs et disque dur, accès au port série et parallè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 conguration matérielle
205 Appels systèmes Les fonctions du BIOS ˆ Le BIOS librairie de fonctions ˆ Chaque fonction exécute une tâche bien précise (par exemple, acher un caractère donné sur l'écran) ˆ L'appel de l'une de ces fonctions = appel système (syscall) ˆ Fonctions du BIOS procédures appelées avec call ˆ Le code du BIOS en ROM est non modiable ˆ Il a été prévu de pouvoir modier le comportement du BIOS en cours d'utilisation (ex: gestion d'un nouveau périphérique) ˆ Le BIOS étant diérent d'un ordinateur à l'autre, les adresses des fonctions changent...
206 Appels systèmes Les fonctions du BIOS ˆ Le BIOS librairie de fonctions ˆ Chaque fonction exécute une tâche bien précise (par exemple, acher un caractère donné sur l'écran) ˆ L'appel de l'une de ces fonctions = appel système (syscall) ˆ Fonctions du BIOS procédures appelées avec call ˆ Le code du BIOS en ROM est non modiable ˆ Il a été prévu de pouvoir modier le comportement du BIOS en cours d'utilisation (ex: gestion d'un nouveau périphérique) ˆ Le BIOS étant diérent d'un ordinateur à l'autre, les adresses des fonctions changent... Comment ça marche?
207 Appels systèmes Les fonctions du BIOS Solution : ˆ Utilisation d'une table d'indirection : la table des vecteurs d'interruptions ˆ table placée en RAM ˆ contient les adresses (en ROM ou RAM) des fonctions du BIOS ˆ implantée à partir de l'adresse 0x (première case mémoire) ˆ initialisée par le BIOS lui-même au moment du démarrage 0x x x adresse de la deuxième fonction du BIOS adresse de la première fonction du BIOS
208 122 Appels systèmes Vecteurs 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 ache un caractère est la 33 ème, on va l'appeler en lisant la 33 ème ligne de la table, puis en allant exécuter les instructions à l'adresse trouvée
209 122 Appels systèmes Vecteurs 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 ache un caractère est la 33 ème, on va l'appeler en lisant la 33 ème ligne de la table, puis en allant exécuter les instructions à l'adresse trouvée... 0x xF123A508 (car 4 33 = 0x84)...
210 122 Appels systèmes Vecteurs 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 ache un caractère est la 33 ème, on va l'appeler en lisant la 33 ème ligne de la table, puis en allant exécuter les instructions à l'adresse trouvée... 0x xF123A508 (car 4 33 = 0x84)... ˆ La table des vecteurs d'interruptions contient des valeurs diérentes pour chaque version de BIOS ˆ peut être modiée pour pointer sur du code en mémoire principale, modiant ainsi le BIOS existant
211 123 Appels systèmes Interruptions ˆ L'Unité de Traitement exécute séquentiellement les instructions ou eectue 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épassement de capacité mémoire, division par zéro, etc. ˆ Appels systèmes (interruptions logicielles) : appels du programme lui-même (int 0x80, etc.)
212 123 Appels systèmes Interruptions ˆ L'Unité de Traitement exécute séquentiellement les instructions ou eectue 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épassement de capacité mémoire, division par zéro, etc. ˆ Appels systèmes (interruptions logicielles) : appels du programme lui-même (int 0x80, etc.)
213 Appels systèmes Interruptions logicielles int n ˆ Permet d'appeler la n ième fonction de la table des vecteurs d'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 vecteurs d'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'est pas nécessairement dans le même segment de code que le programme)
214 125 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 des vecteurs 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 Linux appelée : mov eax, n int 0x80 ; n = numéro de la fonction Linux
215 126 Appels systèmes Fonction n 1 : exit (n de programme) eax : 1 ebx : code de sortie
216 127 Appels systèmes Fonction n 4 : write (ex: acher à l'écran) eax : 4 ebx : descripteur de chier (ux de sortie standard : 1) ecx : adresse du buer à écrire edx : nombre d'octets à écrire
217 128 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 buer où les caractères seront stockés edx : nombre d'octets à lire
218 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
219 130 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
220 131 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
221 Architectures avancées - Instructions Au delà des instructions classiques, Intel/AMD/... ont introduits des instructions spécialisées MMX (3DNow! chez AMD) ˆ MMX (MultiMedia extension ou Matrix Math extension) est un jeu d'instructions pour le calcul matriciel (addition de 4 entiers sur 16 bits 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,...
222 133 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
223 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 cache plutôt qu'en récupérant les données. Fonctionnement ˆ 1. le processeur demande une information (une lecture, par exemple) ; ˆ 2. le cache vérie 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 au processeur au besoin.
224 Architectures avancées - Mémoire cache Pourquoi ça marche? Principes ˆ principe de localité spatiale : l'accès à une donnée située à une adresse X 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 à un instant donné a de fortes chances de se reproduire dans la suite immédiate du programme.
225 136 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
226 137 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 à eectuer dans "unité de traitement". ˆ 4. Charger les données si nécessaire (fetch operands). ˆ 5. Eectuer le calcul (execute). ˆ 6. Ranger le résultat du calcul (store). ˆ 7. Aller à 1.
227 138 Architectures avancées - Pipeline ˆ l'exécution d'une instruction est décomposée par l'unité de commande en 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 avant que la précédente ne soit terminée Recouvrement On ne peut en eet jamais être sûr qu'une instruction est terminée avant que la suivante ne s'exécute.
228 Architectures avancées - Pipeline ˆ cycle mineur : temps nécessaire à une phase ˆ cycle majeur : temps total pour l'exécution d'une instruction
229 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
230 141 Architectures avancées - Pipeline Les dicultés ˆ les accès concurrents à la mémoire (recherche instruction et recherche opé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 long qu'un transfert entre registres mov ax,bx ˆ les problèmes de dépendance (ou de précédence) : accès simultanés aux mêmes opérandes par des instructions diérentes, ˆ les interruptions.
231 Architectures avancées - Pipeline La même instruction sur des opérandes diérents ˆ I N : MOV AX, [mem] ˆ I N+1 : MOV AX, BX ˆ problème : il s'agit ici du problème plus général des accès à la mémoire. ˆ solution : introduire des délais pour synchroniser les instructions du pipeline sur la plus lente (qui sont les accès mémoire)
232 Architectures avancées - Pipeline Que faire dans le cas du déroutement vers l'adresse cible alors que l'unité fetch a déja été chercher l'instruction suivante? ˆ I 1 : CMP AX, 0 ˆ I 2 : JMP J1 ˆ I 3 : ADD BX, CX ˆ... ˆ I n : J1: ADD AX, CX ˆ on appelle pénalité le nombre de cycles perdus si on suspend le pipeline jusqu'à obtention de l'instruction suivante. ˆ dans l'exemple, on doit annuler l'instruction I 3
233 144 Architectures avancées - Pipeline Une solution : prédiction dynamique Branch target buer (BTB) ˆ utilisation d'un cache associatif utilisé par l'étage fetch : ˆ pour les n dernières adresses d'instructions de branchement, l'adresse de l'instruction suivante qui a été choisie. ˆ lorsque le pipeline décode une instruction de branchement : ˆ il vérie 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'instruction suivante, puis l'adresse de ce branchement et celle de l'instruction suivante eective sont rangées dans le BTB.
234 145 Architectures avancées - Pipeline Le problème de dépendance : une dépendance entre deux instructions I i et I i+k apparaissent lorsque l'instruction I i+k travaille sur les mêmes données que I i. Trois classes : ˆ RAW (Read After Write) : I i+k utilise (lecture) un opérande mis à jour (écriture) par I i et doit donc attendre la n de I i, ˆ WAR (Write After Read) : I i+k modie (écriture) un opérande qui est utilisé (lecture) par I i, ˆ WAW (Write After Write) : I i+j et I i mettent à jour (écriture) une information 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 conit.
235 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, cx add ax, bx L'aectation du registre cx par le contenu de la variable l est réalisée trop tardivement!
236 147 Architectures avancées - Pipeline Deuxième version mov cx, [ l ] mov bx, [ k ] mov ax, [ j ] add bx, cx add ax, bx
237 148 Plan 1 Représentation de l'information 2 Architecture de l'ordinateur 3 Le processeur 80x86 4 Langage Assembleur Structure d'un programme assembleur Adressages Les instructions La pile et les procédures Chaînes de caractères Appels systèmes 5 Architectures avancées Instructions avancées Mémoire cache Pipeline RISC
238 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 % du temps ˆ simplication des processeurs : ˆ instructions courantes seulement ˆ plus simples, mieux optimisées, plus ecaces ˆ puce moins grosse, moins gourmandes en énergie,... ˆ processeurs à architecture RISC (Reduced Instruction Set Computer) Conséquences ˆ instructions de taille xe ˆ pipelines plus ecaces ˆ... mais compilateur plus compliqué
239 150 Architectures avancées - RISC CISC ˆ > 200 instructions ˆ taille variable des instructions ˆ instructions : les simples sont câblées mais les complexes sont sous forme 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
240 151 CISC ˆ avantages : ˆ développement plus simple ˆ très répandu ˆ inconvénients : RISC ˆ puce plus grosse et plus compliquée ˆ évolutions limitées ˆ plusieurs cycles par instruction ˆ 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) Architectures avancées - RISC
241 152 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
Programmation assembleur : aperçu
Assembleur : Younès EL AMRANI. 1 Programmation assembleur : aperçu Programmation en assembleur : NASM Module M14 Semestre 4 Printemps 2010 Equipe pédagogique : Younès El Amrani, Abdelhakim El Imrani, Faissal
Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96
Assembleur i8086 Philippe Preux IUT Informatique du Littoral Année universitaire 95 96 1 Avertissement Ce document décrit le langage d assemblage étudié et utilisé dans le cadre des TP d architecture.
Structure d un programme
Architecture des ordinateurs Cours 6 Structure d un programme 3 décembre 2012 Archi 1/30 Programme en Assembleur Archi 2/30 Sections de données programme en assembleur = fichier texte (extension.asm) organisé
Architecture des ordinateurs
Architecture des ordinateurs Cours 7 17 décembre 2012 Archi 1/1 Fonctions, suite et fin Archi 2/1 Rappel Forme générale d un sous-programme (fonction) : etiquette sousprogramme: push ebp ; empile la valeur
DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION
145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu
Architecture des ordinateurs
Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?
Conception de circuits numériques et architecture des ordinateurs
Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique
Exécution des instructions machine
Exécution des instructions machine Eduardo Sanchez EPFL Exemple: le processeur MIPS add a, b, c a = b + c type d'opération (mnémonique) destination du résultat lw a, addr opérandes sources a = mem[addr]
Codage d information. Codage d information : -Définition-
Introduction Plan Systèmes de numération et Représentation des nombres Systèmes de numération Système de numération décimale Représentation dans une base b Représentation binaire, Octale et Hexadécimale
Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)
Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155) F. Pellegrini Université Bordeaux 1 Ce document est copiable et distribuable librement et gratuitement à
Rappels d architecture
Assembleur Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice
Logiciel de base. Première année ENSIMAG
Logiciel de base Première année ENSIMAG 1 Procédures, paramètres, pile En assembleur une fonction est une étiquette, c'est l'adresse de sa première instruction Lors de l'appel d'une fonction, la pile sert
MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C
Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...
CM2 L architecture MIPS32
CM2 L architecture MIPS32 Olivier Marchetti (CM-TD-TP) Alexandre Brière (TD-TP) Laboratoire d informatique de Paris 6 Pôle SoC UPMC Année 2014-2015 Instructions MIPS Contrôle Données en MIPS E/S en MIPS
Compilation (INF 564)
Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation
Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter
Une version javascript sera disponible directement dans le cours prochainement.
Author : Cédric Vanconingsloo Ce cours est principalement axé sur la compréhension du fonctionnement d'un ordinateur et l'étude du seul langage qu'il connaisse, le binaire. De ce fait, le cours est relativement
Les opérations binaires
Les opérations binaires Compétences associées A2 : Analyser et interpréter une information numérique Objectifs Etre capable: - De coder les nombres entiers en code complément à 2. - De résoudre les opérations
Licence Sciences et Technologies Examen janvier 2010
Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.
Représentation des Nombres
Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...
Conversion d un entier. Méthode par soustraction
Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut
Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com [email protected]
Partie 1 Professeur : Haouati Abdelali CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com [email protected] Partie I : Généralités et algorithmique de base 1. Environnement matériel et logiciel
ASR1 TD7 : Un microprocesseur RISC 16 bits
{Â Ö Ñ º ØÖ Ý,È ØÖ ºÄÓ Ù,Æ ÓÐ ºÎ ÝÖ Ø¹ ÖÚ ÐÐÓÒ} Ò ¹ÐÝÓÒº Ö ØØÔ»»Ô Ö Óº Ò ¹ÐÝÓÒº Ö» Ö Ñ º ØÖ Ý»¼ Ö½» ASR1 TD7 : Un microprocesseur RISC 16 bits 13, 20 et 27 novembre 2006 Présentation générale On choisit
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Microprocesseur + Logiciel
Microprocesseur + Logiciel Robot EVALBOT MOHAMED AKIL BUREAU 5253 UNITE IGI 1001 PROGRAMMATION DES MICROPROCESSEURS Présentation [IGI1001] CONTEXTE SCIENTIFIQUE... 4 1. OBJECTIFS DE L UNITE... 6 2. OBJECTIFS
UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.
UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases
Département informatique de l université d Angers
Département informatique de l université d Angers Amélioration d'un logiciel d'émulation du fonctionnement d'un microprocesseur x8 6 SCHAEFFER Florian ROUSSEAUX Billy L3 Informatique Responsable du projet:
Cours Informatique 1. Monsieur SADOUNI Salheddine
Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale
Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java
Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique
4. Initiation à l'assembleur
4. Initiation à l'assembleur 142 143 1. Introduction Pour mieux comprendre la structure interne d'un ordinateur, nous aborderons la langage d'assemblage d'un processeur contemporain, le Pentium III d'intel.
Informatique Générale
Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) [email protected] Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html
Machines virtuelles. Brique ASC. Samuel Tardieu [email protected]. Samuel Tardieu (ENST) Machines virtuelles 1 / 40
Machines virtuelles Brique ASC Samuel Tardieu [email protected] École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut
Logiciel de Base. I. Représentation des nombres
Logiciel de Base (A1-06/07) Léon Mugwaneza ESIL/Dépt. Informatique (bureau A118) [email protected] I. Représentation des nombres Codage et représentation de l'information Information externe formats
SSTIC 2009. Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...
Désobfuscation automatique de binaires Et autres idyles bucoliques... Alexandre Gazet Sogeti / ESEC R&D alexandre.gazet(at)sogeti.com Yoann Guillot Sogeti / ESEC R&D yoann.guillot(at)sogeti.com SSTIC 2009
1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
Architecture des ordinateurs Introduction à l informatique
Architecture des ordinateurs Introduction à l informatique 17 septembre 2004 1 2 3 4 5 6 Les interrupteurs... 0V 5V Ce sont des composants électroniques qui laissent pser un courant principal lorsque la
Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques
Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques CTIA04 Page 1 1. Les types de données sous S7 300 Il existe plusieurs types de données utilisées pour la programmation
Structure fonctionnelle d un SGBD
Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert
GPA770 Microélectronique appliquée Exercices série A
GPA770 Microélectronique appliquée Exercices série A 1. Effectuez les calculs suivants sur des nombres binaires en complément à avec une représentation de 8 bits. Est-ce qu il y a débordement en complément
Tout savoir sur le matériel informatique
Tout savoir sur le matériel informatique Thème de l exposé : Les Processeurs Date : 05 Novembre 2010 Orateurs : Hugo VIAL-JAIME Jérémy RAMBAUD Sommaire : 1. Introduction... 3 2. Historique... 4 3. Relation
1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :
GIF-3002 SMI et Architecture du microprocesseur Ce cours discute de l impact du design du microprocesseur sur le système entier. Il présente d abord l architecture du cœur ARM Cortex M3. Ensuite, le cours
Fonctionnement et performance des processeurs
Fonctionnement et performance des processeurs Eric Cariou Université de Pau et des Pays de l'adour Département Informatique [email protected] 1 Plan Fonctionnement des processeurs Unités de calcul
Assembleur. Faculté I&C, André Maurer, Claude Petitpierre
Assembleur Faculté I&C, André Maurer, Claude Petitpierre INTRODUCTION Logiciel utilisé Faculté I&C, André Maurer, Claude Petitpierre MEMOIRE Mémoire Faculté I&C, André Maurer, Claude Petitpierre Mémoire
Jeux de caracte res et encodage (par Michel Michaud 2014)
Jeux de caracte res et encodage (par Michel Michaud 2014) Les ordinateurs ne traitent que des données numériques. En fait, les codages électriques qu'ils conservent en mémoire centrale ne représentent
Jeu d instructions NIOS II
Jeu d instructions NIOS II 1 Formats d instructions Le processeur NIOS II a un jeu d instructions de type RISC. Il possède 32 registres de 32 bits, notés r0 à r31, avec r0 0. Les instructions sont de longueur
Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)
Base de l'informatique Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB) Généralité Comment fonctionne un ordinateur? Nous définirons 3 couches Le matériel
La mémoire. Un ordinateur. L'octet. Le bit
Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve
Ordinateurs, Structure et Applications
Ordinateurs, Structure et Applications Cours 10, Les interruptions Etienne Tremblay Université Laval, Hiver 2012 Cours 10, p.1 Les interruptions du 8086 Une interruption interrompt l exécution séquentielle
V- Manipulations de nombres en binaire
1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,
Architecture de l ordinateur
Architecture de l ordinateur Emmanuel Lazard Université Paris-Dauphine mars 2011 Computers are my forte! BRAZIL (Terry Gilliam, 1985) Ce document a initialement été publié sous forme de livre : Emmanuel
Algorithmique et Programmation, IMA
Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions
3. Structure des ordinateurs. 3.1 L' Unité Centrale (UC) ou processeur (Central Processing Unit CPU)
ASI Chapitre 3 : Structure des ordinateurs 40 ASI Chapitre 3 : Structure des ordinateurs 41 3. Structure des ordinateurs Le modèle d'architecture de la plupart des ordinateurs actuels provient d'un travail
UE Programmation Impérative Licence 2ème Année 2014 2015
UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie [email protected] 2 Programmation Impérative
IFT1215 Introduction aux systèmes informatiques
Introduction aux circuits logiques de base IFT25 Architecture en couches Niveau 5 Niveau 4 Niveau 3 Niveau 2 Niveau Niveau Couche des langages d application Traduction (compilateur) Couche du langage d
Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu
Travaux d études et de recherches Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu Étudiant : Luc Michel Encadrants : Frédéric Pétrot Nicolas Fournel 23 mai 2010 TABLE DES MATIÈRES
Représentation d un entier en base b
Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir
Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions
Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental
TD Architecture des ordinateurs. Jean-Luc Dekeyser
TD Architecture des ordinateurs Jean-Luc Dekeyser Fiche 1 Nombres de l informatique Exercice 1 Une entreprise désire réaliser la sauvegarde de ses données sur un site distant. Le volume de données à sauvegarder
Conventions d écriture et outils de mise au point
Logiciel de base Première année par alternance Responsable : Christophe Rippert [email protected] Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette
PIC : COURS ASSEMBLEUR
PIC : COURS ASSEMBLEUR I) Fonctions de base d une machine informatique Contenir de façon permanente les tâches à exécuter (mémoire programme) en ROM ou sur support magnétique. Contenir de façon temporaire
Architecture des Ordinateurs. Partie II:
Architecture des Ordinateurs Partie II: Le port Floppy permet le raccordement du lecteur de disquette àla carte mère. Remarque: Le lecteur de disquette a disparu il y a plus de 6 ans, son port suivra.
Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43
Techniques de stockage Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Contenu de ce cours : 1. Stockage de données. Supports, fonctionnement d un disque, technologie RAID 2. Organisation
Introduction...6. Assembleur, philosophieet atouts...8. Avantages et inconvénients de l assembleur...9. Que programmer en Assembleur?.
Table des matières Introduction.....6 Assembleur, philosophieet atouts...8 Avantages et inconvénients de l assembleur...9 Que programmer en Assembleur?.10 Chapitre 1 : Notions de base....10 Les systèmes
Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7
Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin
FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE
I/ GÉNÉRALITÉS I.1/ Fonction Un compteur binaire est utilisé : -pour compter un certain nombre d'évènements binaires -pour diviser la fréquence d'un signal logique par 2 m Page 1 FONCTION COMPTAGE BINAIRE
ET LO GICIEL D UN S YS T EME IN FORMATIQUE
C HAPIT RE 0 : ENVIRONNEMENT MATE RI EL ET LO GICIEL D UN S YS T EME IN FORMATIQUE Objectifs : 1. Présenter l ensemble des ressources physiques et logicielles d un système informatique. 2. Comprendre la
Algorithme. Table des matières
1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............
Résumé Génération de code Le code intermédiaire
Résumé Analyse INFO0004 Structure des langages de programmation Génération de code ; liaison et exécution Justus H. Piater Programmation Analyse Compilation Liaison fichier texte Analyse lexicale flux
Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation
Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
Bases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot
Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,
Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:
Travaux Pratiques 3. IFT 1002/IFT 1005. Structure Interne des Ordinateurs. Département d'informatique et de génie logiciel. Université Laval. Hiver 2012. Prof : Bui Minh Duc. Tous les exercices sont indépendants.
1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)
1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d
TP 1 : 1 Calculs en binaire, octal et hexadécimal
Univ. Lille 1 - Licence Informatique 2ème année 2013-14 Objectifs du TP Ce TP a pour but Codage de l'information TP 1 : 1. de découvrir quelques opérations logiques sur les nombres 2. et quelques formats
Programmation C. Apprendre à développer des programmes simples dans le langage C
Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités
Mathématiques appliquées à l informatique
Mathématiques appliquées à l informatique Luc De Mey Ces notes de cours sont disponibles à l adresse : www.courstechinfo.be/math_info.pdf Dernière révision : 6 mai 2013 Table des matières 1 Systèmes de
Réalisation d un OS 32 bits pour PC(x86)
Rapport projet tutoré Réalisation d un OS 32 bits pour PC(x86) Maxime Chéramy Nicolas Floquet Benjamin Hautbois
Introduction à l algorithmique et à la programmation M1102 CM n 3
Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY [email protected] IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d
Architecture matérielle des systèmes informatiques
Architecture matérielle des systèmes informatiques IDEC, Renens. Version novembre 2003. Avertissement : ce support de cours n est pas destiné à l autoformation et doit impérativement être complété par
Déprotection semi-automatique de binaire
Déprotection semi-automatique de binaire Yoann Guillot et Alexandre Gazet Sogeti - ESEC Résumé Que ce soit sur des binaires malicieux ou non, les protections dont le but est de freiner la rétro-ingénierie
Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1
Chap 4: Analyse syntaxique 1 III- L'analyse syntaxique: 1- Le rôle d'un analyseur syntaxique 2- Grammaires non contextuelles 3- Ecriture d'une grammaire 4- Les méthodes d'analyse 5- L'analyse LL(1) 6-
LOGICIEL DC4D MONITOR
THQtronic LOGICIEL DC4D MONITOR La communication entre PC et DC4D ne peut se faire qu à l aide du câble de liaison USB-TTL de FTDI référence TTL-232R-5V-AJ vendu en option. DC4D Monitor est la même application
I- Définitions des signaux.
101011011100 010110101010 101110101101 100101010101 Du compact-disc, au DVD, en passant par l appareil photo numérique, le scanner, et télévision numérique, le numérique a fait une entrée progressive mais
Architecture Matérielle et Logicielle (LIF6) Cahier d'exercices, automne 2014
Architecture Matérielle et Logicielle (LIF6) Cahier d'exercices, automne 2014 Table des matières 1 Vue d'ensemble de l'ordinateur 4 11 Taille du bus, volume de mémoire centrale 4 12 Petits calculs autour
Désobfuscation automatique de binaire - The Barbarian Sublimation
Désobfuscation automatique de binaire - The Barbarian Sublimation Yoann Guillot, Alexandre Gazet Sogeti - ESEC Résumé Ce papier présente l état de notre recherche dans le domaine de l automatisation du
Initiation à la sécurité
Initiation à la sécurité UE Systèmes informatiques 12 septembre 2011 Julien Raeis - http://raeis.iiens.net/ Présentation Ingénieur IIE 2005 Carrière dans la sécurité des systèmes Consultant en sécurité
Cours d Informatique
Cours d Informatique 1ère année SM/SMI 2007/2008, Info 2 Département de Mathématiques et d Informatique, Université Mohammed V [email protected] [email protected] 2007/2008 Info2, 1ère année SM/SMI 1
Solution du challenge SSTIC 2013. Emilien Girault ANSSI/COSSI/DTO/BAI 06/06/13
Solution du challenge SSTIC 2013 Emilien Girault ANSSI/COSSI/DTO/BAI 06/06/13 Plan Analyse d une capture réseau Détermination des canaux cachés Déchiffrement de l archive Etude d un FPGA Déduction du jeu
Gestion mémoire et Représentation intermédiaire
Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,
Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire
Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS CCS Sommaire Généralités sur le langage. 2 Structure d un programme en C.. 3 Les constantes et équivalences.. 4 Les variables...
Architecture : Circuits numériques et éléments d architecture
Ecole Nationale Supérieure d Informatique et de Mathématiques Appliquées Architecture : Circuits numériques et éléments d architecture 1 ère année Année scolaire 2014 2015 Consignes Les exercices de ce
Présentation du cours
Thibault HILAIRE [email protected] François PECHEUX [email protected] Informatique générale 1 (Python) Introduction Présentation du cours AGRAL-MTX-GM 2014-2015 20h de cours, 40h de TP/projets
Organigramme / Algorigramme Dossier élève 1 SI
Organigramme / Algorigramme Dossier élève 1 SI CI 10, I11 ; CI 11, I10 C24 Algorithmique 8 février 2009 (13:47) 1. Introduction Un organigramme (ou algorigramme, lorsqu il est plus particulièrement appliqué
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
I.1- DÉFINITIONS ET NOTIONS DE BASE
I.1- DÉFINITIONS ET NOTIONS DE BASE Informatique Information Automatique Logiciels (Software) Matériels (Hardware) Définition de l information : On appelle une information tout ce qui est transmissible
Architecture des Ordinateurs Première partie. Licence d Informatique - IUP Miage - FIIFO
Architecture des Ordinateurs Première partie Cécile Germain Daniel Etiemble Licence d Informatique - IUP Miage - FIIFO Table des matières 1 Introduction 3 2 Les composantes de l ordinateur 7 2.1 Le modèle
IV- Comment fonctionne un ordinateur?
1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions
