Comment Ca Marche - Communauté informatique  
   
Accueil - Encyclopédie informatiqueTélécharger l'encyclopédieContribuer à cet article

L'assembleur - Segmentation de la mémoire

Segmentation de la mémoire en assembleur Encyclopédie


Qu'est-ce que la segmentation de la mémoire ?

En assembleur, on appelle segment de mémoire le mécanisme de base de la gestion des adresses pour des processeurs de type 80x86. Les instructions sont stockées dans le registre IP. Il s'agit d'adresses dont la taille est de 16 bits. Or, avec 16 bits il n'est possible d'adresser que 216= 64 Ko.

Les bus d'adresses récents possèdent toutefois 32 bits. Les adresses qu'ils véhiculent sont donc constituées de deux composantes de 16 bits :

  • un segment de 16 bits
  • un déplacement (ou offset en anglais) de 16 bits

Les segments CS et DS

Les segments sont stockés dans des registres de 16 bits, dont les deux principaux sont :

  • Le segment de données : DS (Data Segment)
  • Le segment de code : CS (Code segment)

Le processeur utilise le segment CS pour lire le code d'une instruction. Lors de la lecture de celui-ci il crée une adresse de 32 bits formée de la paire constituée par le registre segment CS et le registre de déplacement IP, on note cette paire CS:IP.
Le registre segment CS est initialisé automatiquement au chargement du programme sur le segment contenant la première instruction à exécuter.

Le segment DS permet au processeur d'aller chercher les données stockées à une adresse. Il crée alors la paire constituée du registre segment DS et de l'adresse 16 bits indiquée dans l'instruction. C'est au programmeur de définir dans le code source l'adresse du segment de données à utiliser, en initialisant le registre DS.

Trucs & astuces pertinents trouvés dans la base de connaissances

09/01 20h26 C/C++ Erreur de segmentation (Langage C)
Segmentation Plus d'astuces sur « Segmentation »

Discussions pertinentes trouvées dans le forum

10/10 20h48 segmentation arbre binaire. Probleme de segmentation sur arbre binaire. Développement 11/10 10h53->wlued8
27/11 18h51 c erreur segmentation [C++]erreur de segmentation Développement 28/11 18h16->odimax8
30/11 19h11 erreur segmentation c erreur segmentation C++ Développement 02/12 00h22->juju4
15/09 10h15 asterisk segmentation fault Asterisk segmentation fault Linux/Unix 15/06 13h42->cha7boul3
06/06 10h57 python segmentation [Python] Erreur de segmentation Développement 06/06 14h09->oreilledelest2
04/09 16h29 programmer segmentation [programmer en C] - erreur de segmentation Développement 04/09 18h11->guillaume12
21/09 00h14 langage segmentation fault [langage C] segmentation fault Développement 24/09 11h33->mamiemando11
21/11 20h40 segmentation [C] erreur de segmentation Développement 28/11 13h27->tophe038
18/01 20h53 segmentation C++ erreur de segmentation Développement 19/01 00h43->Jon3017
15/04 11h19 segmentation fault segmentation fault Développement 15/04 13h35->pom7
Discussion fermée Problème résolu Segmentation Plus de discussions sur « Segmentation »

Ce document intitulé « L'assembleur - Segmentation de la mémoire » issu de l'encyclopédie informatique Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.