Structure d’un micro-ordinateur 15 L’architecture IA 49 · Les classes et les types...

Preview:

Citation preview

Sommaire

Structure d’un micro-ordinateur . . . . . . . 15

1.1 Une machine électronique . . . . . . . . . . . . . . . . . . . . . . . 171.2 Données analogiques et données binaires . . . . . . . . . . . . . . . 191.3 Les bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.4 Les horloges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.5 Traitements sur les bits et les bus . . . . . . . . . . . . . . . . . . . . 261.6 La mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361.7 Le programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391.8 Les entrées/sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401.9 Le démarrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421.10 Les interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

L’architecture IA . . . . . . . . . . . . . . . . . 49

2.1 Le 8086/8088 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Le circuit intégré 8086/8088 . . . . . . . . . . . . . . . . . . . . . . . 54Structure interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

2.2 Du 8086 aux Pentium 4, Athlon XP... . . . . . . . . . . . . . . . . . . 772.3 L’architecture IA-32 actuelle . . . . . . . . . . . . . . . . . . . . . . 882.4 Les contraintes du multitâche . . . . . . . . . . . . . . . . . . . . . . 89

Niveaux de privilège . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Commutation des tâches . . . . . . . . . . . . . . . . . . . . . . . . 93Le système d’exploitation . . . . . . . . . . . . . . . . . . . . . . . . 94

2.5 Modèle du programmeur système . . . . . . . . . . . . . . . . . . . 952.6 Modèle du programmeur d’applications . . . . . . . . . . . . . . . . 97

Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . 972.7 Les architectures 64 bits – AMD64 . . . . . . . . . . . . . . . . . . 103

DOS et DEBUG, premiers programmes . . 107

3.1 MS-DOS dans le PC sous Windows . . . . . . . . . . . . . . . . . . 109Pour lancer des sessions DOS sous Windows . . . . . . . . . . . . . 110Pour lancer DOS au boot . . . . . . . . . . . . . . . . . . . . . . . 114

3.2 Présentation de DEBUG . . . . . . . . . . . . . . . . . . . . . . . 1163.3 Prise en main de DEBUG . . . . . . . . . . . . . . . . . . . . . . . 1213.4 Écrire et tester kb_codes.com . . . . . . . . . . . . . . . . . . . . . 140

Généralités sur les interruptions du BIOS et du DOS . . . . . . . . 140Cahier des charges . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

Premier codage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Le sous-programme SP2 . . . . . . . . . . . . . . . . . . . . . . . . 151Amélioration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

3.5 Quelques exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Énoncés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Réponses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

Assembleurs autonomes . . . . . . . . . . . . 159

4.1 Fabrication d’un programme . . . . . . . . . . . . . . . . . . . . . 1644.2 L’offre : quel assembleur ? . . . . . . . . . . . . . . . . . . . . . . . 1724.3 MS-DOS : le problème du PATH . . . . . . . . . . . . . . . . . . . 1754.4 Application d’essai faire_boot, première étape . . . . . . . . . . . . 1824.5 Utilisation d’un éditeur orienté programmation . . . . . . . . . . . . 1894.6 faire_boot, suite et fin . . . . . . . . . . . . . . . . . . . . . . . . . 1984.7 Utilisation de l’EDI de Visual C++ . . . . . . . . . . . . . . . . . . 211

Compiler des modules assembleur 32 bits au sein d’un projet C/C++ . 211Assembler des programmes assembleur 32 bits avec VS . . . . . . . 215Assembler des programmes assembleur 16 bits avec VS . . . . . . . 217

4.8 Les fichiers MAKE . . . . . . . . . . . . . . . . . . . . . . . . . . 217Les fichiers de type MAKE.BAT ou MAKEIT.BAT . . . . . . . . . 218Les utilitaires NMAKE, NMAKER et MAKE . . . . . . . . . . . . 220

MASM / MASM32 . . . . . . . . . . . . . . . . 231

5.1 Installer une distribution MASM . . . . . . . . . . . . . . . . . . . 233Installation de MASM 6.11 . . . . . . . . . . . . . . . . . . . . . . 236Présentation et installation de MASM32 . . . . . . . . . . . . . . . 242

5.2 Le code source, généralités . . . . . . . . . . . . . . . . . . . . . . 2505.3 Génération et lecture des listings . . . . . . . . . . . . . . . . . . . 256

Génération d’un listing . . . . . . . . . . . . . . . . . . . . . . . . 257Contenu du fichier listing . . . . . . . . . . . . . . . . . . . . . . . 260

Assembleurs intégrés . . . . . . . . . . . . . 269

6.1 Les assembleurs intégrés . . . . . . . . . . . . . . . . . . . . . . . . 2726.2 Les avantages de l’assembleur intégré . . . . . . . . . . . . . . . . . 2796.3 Le marché – Delphi 6 . . . . . . . . . . . . . . . . . . . . . . . . . 282

Prise en main de Delphi 6 Personnel . . . . . . . . . . . . . . . . . 284L’aide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297Débogueurs et fenêtres CPU . . . . . . . . . . . . . . . . . . . . . 299

6.4 BASM, l’assembleur de Delphi . . . . . . . . . . . . . . . . . . . . 3096.5 Application : une fonction IntToBin . . . . . . . . . . . . . . . . . . 3116.6 Autres environnements . . . . . . . . . . . . . . . . . . . . . . . . 320

Sommaire

Pile, cadres de pile et sous-programmes . 3237.1 La pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3257.2 Les instructions PUSH et POP . . . . . . . . . . . . . . . . . . . . 3297.3 Les instructions CALL et RET, sous-programmes simples . . . . . . 3377.4 Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3417.5 Les cadres de pile : ENTER et LEAVE . . . . . . . . . . . . . . . . 346

L’instruction ENTER . . . . . . . . . . . . . . . . . . . . . . . . . 347

Le jeu d’instructions . . . . . . . . . . . . . . 3538.1 Présentation générale des instructions . . . . . . . . . . . . . . . . . 355

Structure d’une instruction . . . . . . . . . . . . . . . . . . . . . . 356Les modes d’adressage . . . . . . . . . . . . . . . . . . . . . . . . . 361Les fiches d’instruction . . . . . . . . . . . . . . . . . . . . . . . . 369Les indicateurs d’état . . . . . . . . . . . . . . . . . . . . . . . . . 374Les codes de conditions . . . . . . . . . . . . . . . . . . . . . . . . 377

8.2 Le jeu d’instructions . . . . . . . . . . . . . . . . . . . . . . . . . . 380Mouvements des données . . . . . . . . . . . . . . . . . . . . . . . 381Transtypages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395Flux du programme . . . . . . . . . . . . . . . . . . . . . . . . . . 400Manipulations de la pile . . . . . . . . . . . . . . . . . . . . . . . . 409Manipulations des flags . . . . . . . . . . . . . . . . . . . . . . . . 409Calcul binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413Calcul décimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425Opérations sur les bits . . . . . . . . . . . . . . . . . . . . . . . . . 431Entrées/sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445Chaînes et tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . 446Instructions diverses . . . . . . . . . . . . . . . . . . . . . . . . . . 453

La FPU . . . . . . . . . . . . . . . . . . . . . . . 4699.1 Nombres réels et virgule flottante . . . . . . . . . . . . . . . . . . . 4729.2 Représentation des réels en informatique . . . . . . . . . . . . . . . 4749.3 La FPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

Les types de données . . . . . . . . . . . . . . . . . . . . . . . . . 482La structure de la FPU . . . . . . . . . . . . . . . . . . . . . . . . 484Les instructions FPU . . . . . . . . . . . . . . . . . . . . . . . . . . 487

9.4 Les données FPU des compilateurs et assembleurs . . . . . . . . . . 4949.5 Travaux pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

Technologies MMX 3DNow! SSE . . . . . . 50510.1 Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50810.2 MMX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513

Registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513Types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . 514Arithmétique par saturation . . . . . . . . . . . . . . . . . . . . . . 516Jeu d’instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . 518

Sommaire

10.3 3DNow! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524Registres et types de données . . . . . . . . . . . . . . . . . . . . . 526Jeu d’instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . 527Extensions aux jeux d’instructions MMX/3DNow! . . . . . . . . . . 533

10.4 Fenêtres de débogage FPU . . . . . . . . . . . . . . . . . . . . . . 54010.5 Technologies SSE . . . . . . . . . . . . . . . . . . . . . . . . . . . 543

Optimisation et chronométrage . . . . . . . 54711.1 Chronométrage du code . . . . . . . . . . . . . . . . . . . . . . . . 551

L’instruction RDTSC et le registre de chronométrage TSC . . . . . . 551Limites de RDTSC . . . . . . . . . . . . . . . . . . . . . . . . . . 554Stratégies de chronométrage . . . . . . . . . . . . . . . . . . . . . 557

11.2 Expérimentations . . . . . . . . . . . . . . . . . . . . . . . . . . . 560Sous Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560

11.3 Alignement des données . . . . . . . . . . . . . . . . . . . . . . . . 56911.4 Mesure de la fréquence du processeur . . . . . . . . . . . . . . . . 572

Annexes. . . . . . . . . . . . . . . . . . . . . . . 57712.1 Annexe A - La numération . . . . . . . . . . . . . . . . . . . . . . 579

Décimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579Binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582Hexadécimal, octal . . . . . . . . . . . . . . . . . . . . . . . . . . . 584Les entiers négatifs . . . . . . . . . . . . . . . . . . . . . . . . . . 588La saisie et l’expression orale . . . . . . . . . . . . . . . . . . . . . 594Les conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596Les outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598

12.2 Annexe B - Notions de logique . . . . . . . . . . . . . . . . . . . . 59912.3 Annexe C – Little Endian, Big Endian, implantation des données en

mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60712.4 Annexe D - BASM, l’assembleur de Delphi . . . . . . . . . . . . . . 615

Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615Les classes et les types d’opérandes – Opérateurs . . . . . . . . . . . 621Fonctions et procédures . . . . . . . . . . . . . . . . . . . . . . . . 626

12.5 Annexe E - Cross-assembleurs et microcontrôleurs . . . . . . . . . . 632

Index. . . . . . . . . . . . . . . . . . . . . . . . . 643

Index des instructions . . . . . . . . . . . . . 655Instructions standards . . . . . . . . . . . . . . . . . . . . . . . . . 657Instructions FPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660Instructions MMX/3DNow ! . . . . . . . . . . . . . . . . . . . . . . 661Instructions SSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662Instructions (Index Général) . . . . . . . . . . . . . . . . . . . . . . 663

Sommaire

Recommended