Le segment de code est une portion de l’espace d’adressage d’un processus virtuel, contenant les instructions a exécuter. Celles-ci sont sous leur forme binaire, en langage machine, après une édition de liens (souvent étape d'une compilation) depuis un code source[1].

Définition

modifier

Segment Le terme «  segment » provient du concept de «segment de mémoire », une approche historique de la gestion de la mémoire qui a été supplantée par la pagination. Lorsqu’un programme est stocké dans un fichier objet, le segment de code fait partie de ce fichier ; lorsque le chargeur place un programme en mémoire afin qu’il puisse être exécuté, diverses zones de mémoire sont allouées (notamment sous forme de pages), correspondant à la fois aux segments des fichiers objets et aux segments nécessaires uniquement au moment de l’exécution. Par exemple, le segment de code d'un fichier objet est chargé dans un segment de code correspondant en mémoire[1].

Lesegment de code en mémoire est généralement en lecture seule et a une taille fixe ; ainsi, sur les systèmes embarqués, il peut généralement être placé dans une mémoire morte (ROM), sans qu'il soit nécessaire de le charger. Si le segment de code n'est pas en lecture seule, cela signifie que l'architecture en question autorise le code automodifiable. Le code à position fixe ou indépendant de la position peut être partagé en mémoire par plusieurs processus dans des systèmes de mémoire segmentée ou paginée[1],[2]. En tant que région de mémoire, le segment de code peut être placé sous le tas ou la pile afin d'empêcher les dépassements de tas et de pile[3].

Article connexe

modifier

Notes et références

modifier
  1. a b et c Jason W. Bacon, « Chapter 10. Subprogram Calls and the Stack » [archive du 2 mai 2014], sur cs.uwm.edu, 13 mars 2012 (consulté le 2 mai 2014), Section 10.4. Memory Segments
  2. Kai Wang, « Code Segment and Data Segment: Memory Layout of a Program » [archive du 2 mai 2014], sur beingdeveloper.com, 20 septembre 2012 (consulté le 2 mai 2014)
  3. Yu-An Tan, Ji-yan Zheng, Yuan-Da Cao et Xue-lan Zhang « Buffer overflow protection based on adjusting code segment limit » (Octobre 2005) (DOI 10.1109/ISCIT.2005.1567023)

Liens externes

modifier

📚 Artikel Terkait di Wikipedia

Segmentation (informatique)

Descripteur de segment d'état de tâche Descripteur de segment de données Descripteur de segment de code Mémoire virtuelle MMU Segment de code Segment de données

Segment de données

programme : la pile, le segment de données et le segment de code. La mémoire d’un programme informatique est divisée ainsi : segment de données (données +

Intel 8086

exemple CS:IP est une adresse formée par combinaison du registre de Code Segment (CS) et du registre d'Instruction Pointer (IP). Contrairement au 68000

Registres du x86

également quatre registres de segment appelés : CS (Code Segment) : sera utilisé chaque fois qu'il s'agit d'une adresse du « code » (du programme), c’est-à-dire

Segment

modèle sur le marché Segment, en informatique, élément de découpage logique de la mémoire vive ou de la mémoire virtuelle Segment de code, portion de l'espace

Segment automobile

général, voir Classement des automobiles. Ne doit pas être confondu avec Segmentation (mécanique). Cet article ne cite pas suffisamment ses sources (novembre

Bunyaviricetes

Le segment S code pour la protéine de la nucléocapside (N). La plupart des bunyavirus possèdent des segments L et M de polarité négative. Le segment S

Intel 80486

linéaire de 4 Go a été mis en œuvre. Tous les registres du « sélecteur de segments » peuvent être définis sur une valeur neutre en mode protégé, ou sur zéro