|
| Titre : | Le Langage assembleur : maîtrisez des processeurs de la famille X86 | | Type de document : | texte imprime | | Auteurs : | Olivier Cauet | | Editeur : | St Herblain : Éd. ENI | | Année de publication : | cop. 2011 | | Importance : | 420 p. | | Présentation : | ill., couv. ill. en coul. | | Format : | 21cm | | ISBN/ISSN/EAN : | 978-2-7460-6508-6 | | Note générale : |
La couv. porte en plus : "Informatique technique" et "Téléchargement [sur] www.editions-eni.fr"
Index | | Langues : | Français | | Mots-clés : | Assembleurs (informatique) PC (ordinateur):programmation | | Résumé : |
Ce livre sur le langage assembleur s'adresse à tout informaticien soucieux d'apprendre ce langage et de disposer d'une documentation pertinente et directe sur le langage des processeurs de la famille X86, au cur de (presque) tous les PC du monde. Programmer en langage machine permet de s'affranchir de certaines limitations dues aux langages de haut niveau et peut être un loisir tout autant qu'un travail au sein d'une entreprise ; l'assembleur permet de développer des applications vraiment très légères, rapides et concises. Le livre propose en trois parties une méthode pour comprendre, apprendre et pratiquer l'assembleur. La première partie, après un rappel sur les connaissances nécessaires à une bonne compréhension du livre, décrit l'aspect théorique du langage. La seconde partie, purement technique, contient la documentation du matériel, des tableaux à propos des structures système, les données relatives aux périphériques et les listes d'instructions. La dernière partie du livre couvre l'aspect pratique, avec des exemples sur la mise en uvre des techniques et fonctionnalités de l'assembleur, pour vous familiariser avec ce langage. L'objectif de l'auteur est de rendre le lecteur autonome pour, à la fin de cette lecture, pouvoir programmer en assembleur et progresser petit à petit vers la réalisation de programmes complexes et performants.
| | Note de contenu : |
Chapitre 1
Notions de base
1. Numération binaire et hexadécimale 13
1.1 Le binaire et les données 13
1.2 Les bases de numération 17
1.2.1 Représentation binaire, base 2 18
1.2.2 Représentation octale, base 8 19
1.2.3 Représentation décimale, base 10 19
1.2.4 Représentation hexadécimale, base 16 19
1.2.5 La représentation BCD, base 16 limitée à 10 valeurs 20
1.2.6 La représentation ASCII 21
1.3 Les données signées 22
2. Registres, mémoires et variables 23
2.1 La donnée et le matériel 23
2.1.1 Le bus 23
2.1.2 La mémoire 24
2.2 Les adresses 25
2.3 Opérations logiques 26
3. Les diagrammes fonctionnels et les tables 32
4. Les mathématiques et l'esprit 34
5. Notions propres à l'assembleur 36
Chapitre 2
Interface avec le programmeur
1. Le langage assembleur 39
2. Règles d'écriture 40
2.1 Syntaxe d'une ligne de code FASM 41
2.1.1 Une instruction par ligne 41
2.1.2 Étiquettes 43
2.1.3 Opérandes 48
2.1.4 Chaînes 48
2.1.5 Expressions numériques 49
2.1.6 Adresses 50
2.2 Le projet assembleur 51
2.2.1 Créer un fichier .ASM 51
2.2.2 Créer un fichier .INC 52
2.2.3 Organiser les répertoires de la source 53
2.2.4 Créer des sauvegardes 54
2.2.5 Choix des noms d'étiquettes 54
2.3 Le compilateur 56
2.3.1 FASM 56
2.3.2 Les listings 58
2.3.3 Paramètres de la ligne de commande 59
2.4 L'éditeur de texte 60
2.4.1 Fasmw.exe 61
2.4.2 Fasmd.exe 64
2.4.3 Raccourcis-clavier des IDE FASM 65
2.5 Les désassembleurs 66
2.6 Les débogueurs 67
2.7 Les émulateurs 69
2.7.1 Émuler un PC 69
2.7.2 Émuler le DOS 71
2.8 L'éditeur hexadécimal 72
2.9 La documentation et Internet 76
Chapitre 3
Processeur x86
1. Le CPU 79
1.1 Les instructions vues depuis le CPU 83
1.2 L'exécution 84
2. Les modes du CPU 85
2.1 Le mode réel 85
2.2 Le mode protégé 86
2.3 Le mode SMM 87
2.4 Le mode 64 bits 88
3. Les registres x86 88
3.1 Registres à usage général (GPR) 88
3.2 Registres d'index 89
3.3 Registres de pointeurs 90
3.4 Registres de segments 91
3.4.1 Histoire des segments 91
3.4.2 Les registres de segments en pratique 92
3.5 Registre de drapeaux 94
3.5.1 Codes de conditions 97
3.6 Registres de gestion du processeur 99
3.6.1 Registres de gestion de la mémoire 100
3.6.2 Registres de contrôle du processeur (Control Registers) 101
3.6.3 Registres de debug (Debug Registers) 101
3.6.4 Registre de compteur 102
4. Les extensions 103
4.1 FPU 103
4.1.1 Les nombres flottants 103
4.1.2 La pile FPU 106
4.2 Extensions SIMD 108
4.2.1 Extension MMX 109
4.2.2 Extension SSE 109
4.2.3 Extension AVX 110
4.2.4 Extension 64 bits 110
5. La mémoire 111
5.1 Plan général 112
5.2 Mémoire en mode réel 16 bits 113
5.3 Mémoire en mode protégé 32 bits 115
5.4 Mémoire en mode 64 bits 115
5.5 Bus d'adresses et agencement des données 116
5.5.1 Règles d'accès générales 116
5.5.2 Zones de mémoire réservées 117
5.5.3 Accès par les segments 118
5.5.4 Alignement des données 119
5.6 Structures système x86 120
5.6.1 Table des Vecteurs d'Interruptions (IVT) 120
5.6.2 Table de Descripteurs Globale (GDT) 123
5.6.3 Table de Descripteurs Locale (LDT) 129
5.6.4 Table de Descripteurs d'Interruptions (IDT) 130
5.6.5 Tables de pages (pagination) 134
5.6.6 Segment d'état des tâches (TSS) 137
5.6.7 I/O BitMap, plan de permission d'accès 140
6. Les ports 141
Chapitre 4
Ressources matérielles
1. Le clavier 145
1.1 Contrôleur clavier 146
1.1.1 Un peu d'histoire 146
1.1.2 Les ports du clavier 147
1.1.3 Commandes et messages 148
1.2 Les scancodes 153
1.3 Utilisation du clavier 163
2. Le contrôleur VGA 168
2.1 La géométrie de l'écran 170
2.2 Modes VGA standard 171
2.3 Palette VGA 172
2.4 Mode texte 175
2.5 Mémoire vidéo VGA 176
2.5.1 Vsync 176
2.6 Norme VESA 179
2.6.1 Conclusion VGA / VESA 188
3. La souris 189
3.1 Fonctionnement 189
3.1.1 Trame PS/2 191
3.1.2 Extensions PS/2 192
3.1.3 Commandes souris PS/2 195
3.1.4 Trame de la souris série 199
3.2 Utilisation de la souris 201
3.2.1 Souris DOS 201
3.2.2 La souris sous Windows 203
4. Le PIT (Timer) 203
4.1 Ports du timer 204
4.2 Programmation 206
4.3 Timer 2 et haut-parleur système 207
4.4 Le timer en pratique 208
5. L'horloge temps réel 208
5.1 NMI et CMOS 212
6. Le contrôleur d'interruptions programmable (PIC) 214
6.1 ICW 216
6.2 OCWs 219
6.3 IRR/ISR 221
6.4 Conclusion 222
7. Le contrôleur de disques durs 222
7.1 Géométrie des disques durs 223
7.1.1 CHS 224
7.1.2 LBA 224
7.2 Accès par le BIOS (INT 13h) 225
7.2.1 Fonctions INT 13h normales 226
7.2.2 Fonctions INT 13h étendues 229
7.3 Accès en PIO 231
7.4 Conclusion 238
8. Les ports de communications 239
8.1 Port parallèle 239
8.1.1 Interface matérielle du port LPT 240
8.1.2 Registres du port LPT 241
8.1.3 Utilisation 243
8.1.4 Conclusion 244
8.2 Port série 244
8.2.1 Interface matérielle du port COM 245
8.2.2 Interface logicielle 247
8.2.3 Utilisation 250
9. Ressources matérielles non standard 252
Chapitre 5
Jeux d'instructions
1. Historique 255
2. Base 16 bits 257
3. Jeux d'instructions généraux 262
3.1 Jeux d'instructions 32 bits en 2011 262
3.1.1 Instructions décimales 262
3.1.2 Instructions arithmétiques 264
3.1.3 Instructions de mouvements de données 270
3.1.4 Instructions logiques 275
3.1.5 Instructions de contrôle du processeur 280
3.1.6 Instructions de branchements 295
3.1.7 Instructions conditionnelles 296
3.1.8 Instructions sur les chaînes 297
4. Les instructions 32 bits en pratique 300
4.1 Mov et les affectations 300
4.2 Opérations sur les pointeurs 301
4.3 Instructions de branchements 303
4.3.1 Instructions de sauts 303
4.3.2 Instructions d'appels 304
4.4 Jeux d'instructions système 305
4.4.1 Gestion de la mémoire 305
4.4.2 Segmentation en mode protégé 305
4.4.3 Pagination 306
4.4.4 Gestion du processeur 306
4.5 Extension du CPU 64 bits 313
4.5.1 Jeu d'instructions 64 bits 315
Chapitre 6
Programmation
1. Premier programme 319
1.1 Programme .COM 319
1.2 Programme .EXE DOS 322
1.3 Programme EXE win32 323
1.4 Programme Linux 325
2. Construction autour des données 326
2.1 Structurer les données 329
2.2 Gestion des données en fichiers 331
2.3 Les variables 335
2.3.1 Entiers 336
2.3.2 Données empaquetées 336
2.3.3 Virgule fixe 337
2.3.4 Virgule flottante 337
2.3.5 BCD 337
3. Formats de fichiers 338
3.1 Texte et ASCII 338
3.2 Images (pixels) 338
3.3 Sons (signaux) 340
3.4 Flux de communication 340
4. Les fonctions 341
4.1 Créer la fonction 341
4.1.1 Factorisation du code 342
4.1.2 Découpage du code 344
4.1.3 Hiérarchiser le code 345
4.2 Gérer la fonction en fichier séparé 346
4.2.1 Permettre le partage avec d'autres sources 347
4.2.2 Prévoir une éventuelle évolution 348
4.3 Gérer les paramètres d'une fonction 349
4.3.1 Gestion par les registres 350
4.3.2 Gestion par la mémoire 351
4.3.3 Gestion par la pile 352
4.4 Les pointeurs de fonctions 352
4.4.1 Pointeurs locaux 352
4.4.2 Pointeurs globaux 353
4.4.3 Pointeurs de N niveaux 353
4.5 Les conventions d'appels de haut niveau 353
4.5.1 Cdecl 353
4.5.2 Syscall 354
4.5.3 Fastcall 354
4.5.4 Pascal 355
4.5.5 Stdcall 355
5. Programmation d'applications 356
5.1 BOOT/BIOS 356
5.1.1 Le BOOT 357
5.1.2 Le Boot-loader 358
5.1.3 Les tables de partitions 360
5.1.4 Le mode réel 361
5.1.5 Le mode protégé 361
5.1.6 Revenir au mode réel 363
5.1.7 Les autres modes non documentés 365
6. Optimisation du code (et des données) 366
6.1 Optimisation de code 366
6.1.1 Pipelines 369
6.2 Optimisation de données 370
7. Conclusion 371
Annexe
Extensions du jeu d'instructions
1. Généralités 373
2. Extension X87 373
2.1 Jeu d'instructions FPU 373
2.1.1 Instructions de mouvement de données 375
2.1.2 Instructions de mouvement conditionnel de données 376
2.1.3 Instructions de chargement de constantes 377
2.1.4 Instructions arithmétiques primitives 377
2.1.5 Instructions de comparaison 379
2.1.6 Instructions trigonométriques 381
2.1.7 Instructions exponentielles et logarithmiques 381
2.1.8 Instructions de contrôle 382
2.1.9 Méthode de programmation FPU 384
3. Extensions SIMD 385
3.1 MMX 386
3.1.1 Instructions de mouvement de données 386
3.1.2 Instructions arithmétiques 387
3.1.3 Instructions de comparaison 388
3.1.4 Instructions logiques 388
3.1.5 Instructions de conversion 388
3.1.6 Instructions d'empaquetage 389
3.1.7 Instructions de décalages logiques 389
3.1.8 Instruction de gestion EMMS 389
3.2 SSE1 389
3.2.1 Instructions de mouvement de données 390
3.2.2 Instructions arithmétiques 391
3.2.3 Instructions logiques 391
3.2.4 Instructions de comparaison 392
3.2.5 Instructions de distribution et empaquetage de données 392
3.2.6 Instructions de conversion 392
3.2.7 Instructions SIMD sur les entiers 64 bits 393
3.2.8 Instructions avec contrôle du cache 393
3.3 SSE2 393
3.3.1 Instructions de mouvement de données 393
3.3.2 Instructions arithmétiques 394
3.3.3 Instructions logiques 394
3.3.4 Instructions de comparaison 395
3.3.5 Instructions de distribution et empaquetage de données 395
3.3.6 Instructions de conversion 395
3.3.7 Instructions SIMD sur les entiers 64 et 128 bits 396
3.3.8 Instructions avec contrôle du cache 397
3.4 SSE3 397
3.4.1 Instruction d'optimisation du chargement de données 128 bits non alignée 397
3.4.2 Instructions d'amélioration des chargements et copies 397
3.4.3 Instructions d'additions et soustractions empaquetées 397
3.4.4 Instructions d'additions et soustractions horizontales 397
3.5 SSSE3 398
3.5.1 Instructions SSSE3 398
3.6 SSE4 399
3.6.1 Instructions SSE4.1 399
3.6.2 Instructions SSE4.2 402
3.6.3 Instructions SSE4a (AMD) 403
3.7 3Dnow ! 403
3.7.1 Instructions AMD 3Dnow ! 404
3.8 Autres jeux 406
Index 407 | | Permalink : | ./index.php?lvl=notice_display&id=13842 |
Le Langage assembleur : maîtrisez des processeurs de la famille X86 [texte imprime] / Olivier Cauet . - [S.l.] : St Herblain : Éd. ENI, cop. 2011 . - 420 p. : ill., couv. ill. en coul. ; 21cm. ISBN : 978-2-7460-6508-6
La couv. porte en plus : "Informatique technique" et "Téléchargement [sur] www.editions-eni.fr"
Index Langues : Français | Mots-clés : | Assembleurs (informatique) PC (ordinateur):programmation | | Résumé : |
Ce livre sur le langage assembleur s'adresse à tout informaticien soucieux d'apprendre ce langage et de disposer d'une documentation pertinente et directe sur le langage des processeurs de la famille X86, au cur de (presque) tous les PC du monde. Programmer en langage machine permet de s'affranchir de certaines limitations dues aux langages de haut niveau et peut être un loisir tout autant qu'un travail au sein d'une entreprise ; l'assembleur permet de développer des applications vraiment très légères, rapides et concises. Le livre propose en trois parties une méthode pour comprendre, apprendre et pratiquer l'assembleur. La première partie, après un rappel sur les connaissances nécessaires à une bonne compréhension du livre, décrit l'aspect théorique du langage. La seconde partie, purement technique, contient la documentation du matériel, des tableaux à propos des structures système, les données relatives aux périphériques et les listes d'instructions. La dernière partie du livre couvre l'aspect pratique, avec des exemples sur la mise en uvre des techniques et fonctionnalités de l'assembleur, pour vous familiariser avec ce langage. L'objectif de l'auteur est de rendre le lecteur autonome pour, à la fin de cette lecture, pouvoir programmer en assembleur et progresser petit à petit vers la réalisation de programmes complexes et performants.
| | Note de contenu : |
Chapitre 1
Notions de base
1. Numération binaire et hexadécimale 13
1.1 Le binaire et les données 13
1.2 Les bases de numération 17
1.2.1 Représentation binaire, base 2 18
1.2.2 Représentation octale, base 8 19
1.2.3 Représentation décimale, base 10 19
1.2.4 Représentation hexadécimale, base 16 19
1.2.5 La représentation BCD, base 16 limitée à 10 valeurs 20
1.2.6 La représentation ASCII 21
1.3 Les données signées 22
2. Registres, mémoires et variables 23
2.1 La donnée et le matériel 23
2.1.1 Le bus 23
2.1.2 La mémoire 24
2.2 Les adresses 25
2.3 Opérations logiques 26
3. Les diagrammes fonctionnels et les tables 32
4. Les mathématiques et l'esprit 34
5. Notions propres à l'assembleur 36
Chapitre 2
Interface avec le programmeur
1. Le langage assembleur 39
2. Règles d'écriture 40
2.1 Syntaxe d'une ligne de code FASM 41
2.1.1 Une instruction par ligne 41
2.1.2 Étiquettes 43
2.1.3 Opérandes 48
2.1.4 Chaînes 48
2.1.5 Expressions numériques 49
2.1.6 Adresses 50
2.2 Le projet assembleur 51
2.2.1 Créer un fichier .ASM 51
2.2.2 Créer un fichier .INC 52
2.2.3 Organiser les répertoires de la source 53
2.2.4 Créer des sauvegardes 54
2.2.5 Choix des noms d'étiquettes 54
2.3 Le compilateur 56
2.3.1 FASM 56
2.3.2 Les listings 58
2.3.3 Paramètres de la ligne de commande 59
2.4 L'éditeur de texte 60
2.4.1 Fasmw.exe 61
2.4.2 Fasmd.exe 64
2.4.3 Raccourcis-clavier des IDE FASM 65
2.5 Les désassembleurs 66
2.6 Les débogueurs 67
2.7 Les émulateurs 69
2.7.1 Émuler un PC 69
2.7.2 Émuler le DOS 71
2.8 L'éditeur hexadécimal 72
2.9 La documentation et Internet 76
Chapitre 3
Processeur x86
1. Le CPU 79
1.1 Les instructions vues depuis le CPU 83
1.2 L'exécution 84
2. Les modes du CPU 85
2.1 Le mode réel 85
2.2 Le mode protégé 86
2.3 Le mode SMM 87
2.4 Le mode 64 bits 88
3. Les registres x86 88
3.1 Registres à usage général (GPR) 88
3.2 Registres d'index 89
3.3 Registres de pointeurs 90
3.4 Registres de segments 91
3.4.1 Histoire des segments 91
3.4.2 Les registres de segments en pratique 92
3.5 Registre de drapeaux 94
3.5.1 Codes de conditions 97
3.6 Registres de gestion du processeur 99
3.6.1 Registres de gestion de la mémoire 100
3.6.2 Registres de contrôle du processeur (Control Registers) 101
3.6.3 Registres de debug (Debug Registers) 101
3.6.4 Registre de compteur 102
4. Les extensions 103
4.1 FPU 103
4.1.1 Les nombres flottants 103
4.1.2 La pile FPU 106
4.2 Extensions SIMD 108
4.2.1 Extension MMX 109
4.2.2 Extension SSE 109
4.2.3 Extension AVX 110
4.2.4 Extension 64 bits 110
5. La mémoire 111
5.1 Plan général 112
5.2 Mémoire en mode réel 16 bits 113
5.3 Mémoire en mode protégé 32 bits 115
5.4 Mémoire en mode 64 bits 115
5.5 Bus d'adresses et agencement des données 116
5.5.1 Règles d'accès générales 116
5.5.2 Zones de mémoire réservées 117
5.5.3 Accès par les segments 118
5.5.4 Alignement des données 119
5.6 Structures système x86 120
5.6.1 Table des Vecteurs d'Interruptions (IVT) 120
5.6.2 Table de Descripteurs Globale (GDT) 123
5.6.3 Table de Descripteurs Locale (LDT) 129
5.6.4 Table de Descripteurs d'Interruptions (IDT) 130
5.6.5 Tables de pages (pagination) 134
5.6.6 Segment d'état des tâches (TSS) 137
5.6.7 I/O BitMap, plan de permission d'accès 140
6. Les ports 141
Chapitre 4
Ressources matérielles
1. Le clavier 145
1.1 Contrôleur clavier 146
1.1.1 Un peu d'histoire 146
1.1.2 Les ports du clavier 147
1.1.3 Commandes et messages 148
1.2 Les scancodes 153
1.3 Utilisation du clavier 163
2. Le contrôleur VGA 168
2.1 La géométrie de l'écran 170
2.2 Modes VGA standard 171
2.3 Palette VGA 172
2.4 Mode texte 175
2.5 Mémoire vidéo VGA 176
2.5.1 Vsync 176
2.6 Norme VESA 179
2.6.1 Conclusion VGA / VESA 188
3. La souris 189
3.1 Fonctionnement 189
3.1.1 Trame PS/2 191
3.1.2 Extensions PS/2 192
3.1.3 Commandes souris PS/2 195
3.1.4 Trame de la souris série 199
3.2 Utilisation de la souris 201
3.2.1 Souris DOS 201
3.2.2 La souris sous Windows 203
4. Le PIT (Timer) 203
4.1 Ports du timer 204
4.2 Programmation 206
4.3 Timer 2 et haut-parleur système 207
4.4 Le timer en pratique 208
5. L'horloge temps réel 208
5.1 NMI et CMOS 212
6. Le contrôleur d'interruptions programmable (PIC) 214
6.1 ICW 216
6.2 OCWs 219
6.3 IRR/ISR 221
6.4 Conclusion 222
7. Le contrôleur de disques durs 222
7.1 Géométrie des disques durs 223
7.1.1 CHS 224
7.1.2 LBA 224
7.2 Accès par le BIOS (INT 13h) 225
7.2.1 Fonctions INT 13h normales 226
7.2.2 Fonctions INT 13h étendues 229
7.3 Accès en PIO 231
7.4 Conclusion 238
8. Les ports de communications 239
8.1 Port parallèle 239
8.1.1 Interface matérielle du port LPT 240
8.1.2 Registres du port LPT 241
8.1.3 Utilisation 243
8.1.4 Conclusion 244
8.2 Port série 244
8.2.1 Interface matérielle du port COM 245
8.2.2 Interface logicielle 247
8.2.3 Utilisation 250
9. Ressources matérielles non standard 252
Chapitre 5
Jeux d'instructions
1. Historique 255
2. Base 16 bits 257
3. Jeux d'instructions généraux 262
3.1 Jeux d'instructions 32 bits en 2011 262
3.1.1 Instructions décimales 262
3.1.2 Instructions arithmétiques 264
3.1.3 Instructions de mouvements de données 270
3.1.4 Instructions logiques 275
3.1.5 Instructions de contrôle du processeur 280
3.1.6 Instructions de branchements 295
3.1.7 Instructions conditionnelles 296
3.1.8 Instructions sur les chaînes 297
4. Les instructions 32 bits en pratique 300
4.1 Mov et les affectations 300
4.2 Opérations sur les pointeurs 301
4.3 Instructions de branchements 303
4.3.1 Instructions de sauts 303
4.3.2 Instructions d'appels 304
4.4 Jeux d'instructions système 305
4.4.1 Gestion de la mémoire 305
4.4.2 Segmentation en mode protégé 305
4.4.3 Pagination 306
4.4.4 Gestion du processeur 306
4.5 Extension du CPU 64 bits 313
4.5.1 Jeu d'instructions 64 bits 315
Chapitre 6
Programmation
1. Premier programme 319
1.1 Programme .COM 319
1.2 Programme .EXE DOS 322
1.3 Programme EXE win32 323
1.4 Programme Linux 325
2. Construction autour des données 326
2.1 Structurer les données 329
2.2 Gestion des données en fichiers 331
2.3 Les variables 335
2.3.1 Entiers 336
2.3.2 Données empaquetées 336
2.3.3 Virgule fixe 337
2.3.4 Virgule flottante 337
2.3.5 BCD 337
3. Formats de fichiers 338
3.1 Texte et ASCII 338
3.2 Images (pixels) 338
3.3 Sons (signaux) 340
3.4 Flux de communication 340
4. Les fonctions 341
4.1 Créer la fonction 341
4.1.1 Factorisation du code 342
4.1.2 Découpage du code 344
4.1.3 Hiérarchiser le code 345
4.2 Gérer la fonction en fichier séparé 346
4.2.1 Permettre le partage avec d'autres sources 347
4.2.2 Prévoir une éventuelle évolution 348
4.3 Gérer les paramètres d'une fonction 349
4.3.1 Gestion par les registres 350
4.3.2 Gestion par la mémoire 351
4.3.3 Gestion par la pile 352
4.4 Les pointeurs de fonctions 352
4.4.1 Pointeurs locaux 352
4.4.2 Pointeurs globaux 353
4.4.3 Pointeurs de N niveaux 353
4.5 Les conventions d'appels de haut niveau 353
4.5.1 Cdecl 353
4.5.2 Syscall 354
4.5.3 Fastcall 354
4.5.4 Pascal 355
4.5.5 Stdcall 355
5. Programmation d'applications 356
5.1 BOOT/BIOS 356
5.1.1 Le BOOT 357
5.1.2 Le Boot-loader 358
5.1.3 Les tables de partitions 360
5.1.4 Le mode réel 361
5.1.5 Le mode protégé 361
5.1.6 Revenir au mode réel 363
5.1.7 Les autres modes non documentés 365
6. Optimisation du code (et des données) 366
6.1 Optimisation de code 366
6.1.1 Pipelines 369
6.2 Optimisation de données 370
7. Conclusion 371
Annexe
Extensions du jeu d'instructions
1. Généralités 373
2. Extension X87 373
2.1 Jeu d'instructions FPU 373
2.1.1 Instructions de mouvement de données 375
2.1.2 Instructions de mouvement conditionnel de données 376
2.1.3 Instructions de chargement de constantes 377
2.1.4 Instructions arithmétiques primitives 377
2.1.5 Instructions de comparaison 379
2.1.6 Instructions trigonométriques 381
2.1.7 Instructions exponentielles et logarithmiques 381
2.1.8 Instructions de contrôle 382
2.1.9 Méthode de programmation FPU 384
3. Extensions SIMD 385
3.1 MMX 386
3.1.1 Instructions de mouvement de données 386
3.1.2 Instructions arithmétiques 387
3.1.3 Instructions de comparaison 388
3.1.4 Instructions logiques 388
3.1.5 Instructions de conversion 388
3.1.6 Instructions d'empaquetage 389
3.1.7 Instructions de décalages logiques 389
3.1.8 Instruction de gestion EMMS 389
3.2 SSE1 389
3.2.1 Instructions de mouvement de données 390
3.2.2 Instructions arithmétiques 391
3.2.3 Instructions logiques 391
3.2.4 Instructions de comparaison 392
3.2.5 Instructions de distribution et empaquetage de données 392
3.2.6 Instructions de conversion 392
3.2.7 Instructions SIMD sur les entiers 64 bits 393
3.2.8 Instructions avec contrôle du cache 393
3.3 SSE2 393
3.3.1 Instructions de mouvement de données 393
3.3.2 Instructions arithmétiques 394
3.3.3 Instructions logiques 394
3.3.4 Instructions de comparaison 395
3.3.5 Instructions de distribution et empaquetage de données 395
3.3.6 Instructions de conversion 395
3.3.7 Instructions SIMD sur les entiers 64 et 128 bits 396
3.3.8 Instructions avec contrôle du cache 397
3.4 SSE3 397
3.4.1 Instruction d'optimisation du chargement de données 128 bits non alignée 397
3.4.2 Instructions d'amélioration des chargements et copies 397
3.4.3 Instructions d'additions et soustractions empaquetées 397
3.4.4 Instructions d'additions et soustractions horizontales 397
3.5 SSSE3 398
3.5.1 Instructions SSSE3 398
3.6 SSE4 399
3.6.1 Instructions SSE4.1 399
3.6.2 Instructions SSE4.2 402
3.6.3 Instructions SSE4a (AMD) 403
3.7 3Dnow ! 403
3.7.1 Instructions AMD 3Dnow ! 404
3.8 Autres jeux 406
Index 407 | | Permalink : | ./index.php?lvl=notice_display&id=13842 |
|  |