Le langage assembleur Maîtrisez le code des processeurs de la famille X86
Le Plus des Editions ENI :
*Le livre numérique online est offert pour l'achat du livre imprimé.
Retrouvez tous les livres bénéficiant de cette offre dans la rubrique "Livres Numériques".
Voir conditions
Consulter des extraits du livre en ligne
Aperçu du livre papier
- Niveau Expert
- Nombre de pages 420 pages
- Parution juin 2011
- Niveau Expert
- Parution mai 2011
Ce livre sur le langage assembleur s'adresse à tout développeur soucieux d’utiliser ce langage et de disposer d’une documentation pertinente et directe sur le langage des processeurs de la famille X86, au cœur 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 qu’il puisse, à la fin de cette lecture, programmer en assembleur et progresser petit à petit vers la réalisation de programmes complexes et performants.
Les chapitres du livre :
Avant-propos – Notions de base – Interface avec le programmeur – Processeur x86 – Ressources matérielles – Jeux d’instructions – Programmation – Annexe : Extension du jeu d’instructions
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 qu’il puisse, à la fin de cette lecture, programmer en assembleur et progresser petit à petit vers la réalisation de programmes complexes et performants.
Les chapitres du livre :
Avant-propos – Notions de base – Interface avec le programmeur – Processeur x86 – Ressources matérielles – Jeux d’instructions – Programmation – Annexe : Extension du jeu d’instructions
Téléchargements
Avant-propos
- Avant-propos
Notions de base
- Numération binaire et hexadécimale
- 1. Le binaire et les données
- 2. Les bases de numération
- a. Représentation binaire, base 2
- b. Représentation octale, base 8
- c. Représentation décimale, base 10
- d. Représentation hexadécimale, base 16
- e. La représentation BCD, base 16 limitée à 10 valeurs
- f. La représentation ASCII
- 3. Les données signées
- 1. La donnée et le matériel
- a. Le bus
- b. La mémoire
Interface avec le programmeur
- Le langage assembleur
- Règles d'écriture
- 1. Syntaxe d’une ligne de code FASM
- a. Une instruction par ligne
- b. Étiquettes
- c. Opérandes
- d. Chaînes
- e. Expressions numériques
- f. Adresses
- 1. Syntaxe d’une ligne de code FASM
- 2. Le projet assembleur
- a. Créer un fichier .ASM
- b. Créer un fichier .INC
- c. Organiser les répertoires de la source
- d. Créer des sauvegardes
- e. Choix des noms d’étiquettes
- 3. Le compilateur
- a. FASM
- b. Les listings
- c. Paramètres de la ligne de commande
- 4. L’éditeur de texte
- a. Fasmw.exe
- b. Fasmd.exe
- c. Raccourcis-clavier des IDE FASM
- 5. Les désassembleurs
- 6. Les débogueurs
- 7. Les émulateurs
- a. Émuler un PC
- b. Émuler le DOS
- 8. L’éditeur hexadécimal
- 9. La documentation et Internet
Processeur x86
- Le CPU
- 1. Les instructions vues depuis le CPU
- 2. L’exécution
- Les modes du CPU
- 1. Le mode réel
- 2. Le mode protégé
- 3. Le mode SMM
- 4. Le mode 64 bits
- Les registres x86
- 1. Registres à usage général (GPR)
- 2. Registres d’index
- 3. Registres de pointeurs
- 4. Registres de segments
- a. Histoire des segments
- b. Les registres de segments en pratique
- 5. Registre de drapeaux
- a. Codes de conditions
- 6. Registres de gestion du processeur
- a. Registres de gestion de la mémoire
- b. Registres de contrôle du processeur (Control Registers)
- c. Registres de debug (Debug Registers)
- d. Registre de compteur
- 1. FPU
- a. Les nombres flottants
- b. La pile FPU
- a. Extension MMX
- b. Extension SSE
- c. Extension AVX
- d. Extension 64 bits
- 1. Plan général
- 2. Mémoire en mode réel 16 bits
- 3. Mémoire en mode protégé 32 bits
- 4. Mémoire en mode 64 bits
- 5. Bus d’adresses et agencement des données
- a. Règles d’accès générales
- b. Zones de mémoire réservées
- c. Accès par les segments
- d. Alignement des données
- a. Table des Vecteurs d’Interruptions (IVT)
- b. Table de Descripteurs Globale (GDT)
- c. Table de Descripteurs Locale (LDT)
- d. Table de Descripteurs d’Interruptions (IDT)
- e. Tables de pages (pagination)
- f. Segment d’état des tâches (TSS)
- g. I/O BitMap, plan de permission d’accès
Ressources matérielles
- Le clavier
- 1. Contrôleur clavier
- a. Un peu d’histoire
- b. Les ports du clavier
- c. Commandes et messages
- 1. Contrôleur clavier
- 2. Les scancodes
- 3. Utilisation du clavier
- 1. La géométrie de l’écran
- 2. Modes VGA standard
- 3. Palette VGA
- 4. Mode texte
- 5. Mémoire vidéo VGA
- a. Vsync
- a. Conclusion VGA / VESA
- 1. Fonctionnement
- a. Trame PS/2
- b. Extensions PS/2
- c. Commandes souris PS/2
- d. Trame de la souris série
- a. Souris DOS
- b. La souris sous Windows
- 1. Ports du timer
- 2. Programmation
- 3. Timer 2 et haut-parleur système
- 4. Le timer en pratique
- 1. NMI et CMOS
- 1. ICW
- 2. OCWs
- 3. IRR/ISR
- 4. Conclusion
- 1. Géométrie des disques durs
- a. CHS
- b. LBA
- a. Fonctions INT 13h normales
- b. Fonctions INT 13h étendues
- 1. Port parallèle
- a. Interface matérielle du port LPT
- b. Registres du port LPT
- c. Utilisation
- d. Conclusion
- a. Interface matérielle du port COM
- b. Interface logicielle
- c. Utilisation
Jeux d'instructions
- Historique
- Base 16 bits
- Jeux d'instructions généraux
- 1. Jeux d’instructions 32 bits en 2011
- a. Instructions décimales
- b. Instructions arithmétiques
- c. Instructions de mouvements de données
- d. Instructions logiques
- e. Instructions de contrôle du processeur
- f. Instructions de branchements
- g. Instructions conditionnelles
- h. Instructions sur les chaînes
- 1. Jeux d’instructions 32 bits en 2011
- 1. Mov et les affectations
- 2. Opérations sur les pointeurs
- 3. Instructions de branchements
- a. Instructions de sauts
- b. Instructions d’appels
- a. Gestion de la mémoire
- b. Segmentation en mode protégé
- c. Pagination
- d. Gestion du processeur
- a. Jeu d’instructions 64 bits
Programmation
- Premier programme
- 1. Programme .COM
- 2. Programme .EXE DOS
- 3. Programme EXE win32
- 4. Programme Linux
- Construction autour des données
- 1. Structurer les données
- 2. Gestion des données en fichiers
- 3. Les variables
- a. Entiers
- b. Données empaquetées
- c. Virgule fixe
- d. Virgule flottante
- e. BCD
- 1. Texte et ASCII
- 2. Images (pixels)
- 3. Sons (signaux)
- 4. Flux de communication
- 1. Créer la fonction
- a. Factorisation du code
- b. Découpage du code
- c. Hiérarchiser le code
- a. Permettre le partage avec d’autres sources
- b. Prévoir une éventuelle évolution
- a. Gestion par les registres
- b. Gestion par la mémoire
- c. Gestion par la pile
- a. Pointeurs locaux
- b. Pointeurs globaux
- c. Pointeurs de N niveaux
- a. Cdecl
- b. Syscall
- c. Fastcall
- d. Pascal
- e. Stdcall
- 1. BOOT/BIOS
- a. Le BOOT
- b. Le Boot-loader
- c. Les tables de partitions
- d. Le mode réel
- e. Le mode protégé
- f. Revenir au mode réel
- g. Les autres modes non documentés
- 1. Optimisation de code
- a. Pipelines
Annexe - Extensions du jeu d'instructions
- Généralités
- Extension X87
- 1. Jeu d’instructions FPU
- a. Instructions de mouvement de données
- b. Instructions de mouvement conditionnel de données
- c. Instructions de chargement de constantes
- d. Instructions arithmétiques primitives
- e. Instructions de comparaison
- f. Instructions trigonométriques
- g. Instructions exponentielles et logarithmiques
- h. Instructions de contrôle
- i. Méthode de programmation FPU
- 1. Jeu d’instructions FPU
- 1. MMX
- a. Instructions de mouvement de données
- b. Instructions arithmétiques
- c. Instructions de comparaison
- d. Instructions logiques
- e. Instructions de conversion
- f. Instructions d’empaquetage
- g. Instructions de décalages logiques
- h. Instruction de gestion EMMS
- a. Instructions de mouvement de données
- b. Instructions arithmétiques
- c. Instructions logiques
- d. Instructions de comparaison
- e. Instructions de distribution et empaquetage de données
- f. Instructions de conversion
- g. Instructions SIMD sur les entiers 64 bits
- h. Instructions avec contrôle du cache
- a. Instructions de mouvement de données
- b. Instructions arithmétiques
- c. Instructions logiques
- d. Instructions de comparaison
- e. Instructions de distribution et empaquetage de données
- f. Instructions de conversion
- g. Instructions SIMD sur les entiers 64 et 128 bits
- h. Instructions avec contrôle du cache
- a. Instruction d’optimisation du chargement de données 128 bits non alignée
- b. Instructions d’amélioration des chargements et copies
- c. Instructions d’additions et soustractions empaquetées
- d. Instructions d’additions et soustractions horizontales
- a. Instructions SSSE3
- a. Instructions SSE4.1
- b. Instructions SSE4.2
- c. Instructions SSE4a (AMD)
- a. Instructions AMD 3Dnow!