Voici la structure de données d'un descripteur de segment utiliser par la gestion des segments par le microprocesseur.
Descripteur de segment pour les 80286
| Déplacement | Taille | Description | |||
|---|---|---|---|---|---|
| 00h | 1 octet | Cette cellule permet d'indiquer la partie base de la longueur du segment. | |||
| 01h | 1 octet | Cette cellule permet d'indiquer la partie haute de la longueur du segment. | |||
| 02h | 1 octet | Cette cellule permet d'indiquer la partie base de l'adresse du segment de 24 bits. | |||
| 03h | 1 octet | Cette cellule permet d'indiquer la partie moyenne de l'adresse du segment de 24 bits. | |||
| 04h | 1 octet | Cette cellule permet d'indiquer la partie haute de l'adresse du segment de 24 bits. | |||
| 05h | 1 octet | Cette cellule permet d'indiquer les attributs du segment : | |||
| Bit | Nom du champ | Description | |||
| 0 | A (Accessable) | Ce champ permet d'indiquer le bit d'accès : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer que le segment n'est pas accessible. | ||||
| 1 | Cette valeur permet d'indiquer que le segment est accessible. | ||||
| 1 | R (Readable segment) / W (Writable) | Ce champ permet d'indiquer si le segment est lisible ou écrivable : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer que la lecture (segment de code) ou l'écriture (segment de données) est désactivé (active l'exécution seulement). | ||||
| 1 | Cette valeur permet d'indiquer que le lecture (segment de code) ou l'écriture (segment de données) est activé. | ||||
| 2 | C (Control Bit) / ED (Expand Down) | Ce champ permet d'indiquer le bit de contrôle ou extensible : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer que les règles de fonctionnement des segments via un pont, en utilisant PL si segment de code ou extensible si segment de données. | ||||
| 1 | Cette valeur permet d'indiquer que le segment peut être appelé immédiatement en utilisant un CALL FAR à partir du même ou de plusieurs segments privilégiés si segment de code ou pas extensible si segment de données. | ||||
| 3 | E (Extended Type of Segment Descriptor) | Ce champ permet d'indiquer type de segment de segment étendue | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer un segment de données. | ||||
| 1 | Cette valeur permet d'indiquer un segment de code. | ||||
| 0 à 3 | TYPE | Ce champ permet d'indiquer le type si le champ «S» (descripteur de contrôle) à la valeur 0 : | |||
| Valeur | Description | ||||
| 0000 | Cette valeur n'est pas utilisé. | ||||
| 0001 | Cette valeur permet d'indiquer un TSS disponible. | ||||
| 0010 | Cette valeur permet d'indiquer un LDT. | ||||
| 0011 | Cette valeur permet d'indiquer un TSS occupé. | ||||
| 0100 | Cette valeur permet d'indiquer un appel par pont. | ||||
| 0101 | Cette valeur permet d'indiquer un tâche par pont. | ||||
| 0110 | Cette valeur permet d'indiquer une interruption par pont. | ||||
| 0111 | Cette valeur permet d'indiquer une trappe par pont. | ||||
| 1000 à 1111 | Ces valeurs ne sont pas utilisés. | ||||
| 4 | S (System) | Ce champ permet d'indiquer le type du système : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer un descripteur de contrôle. | ||||
| 1 | Cette valeur permet d'indiquer un segment de code ou de données. | ||||
| 5 à 6 | DPL (Descriptor Privilege Level) | Ce champ permet d'indiquer le niveau de privilège : | |||
| Valeur | Description | ||||
| 00 | Cette valeur permet d'indiquer un niveau très bas. | ||||
| 01 | Cette valeur permet d'indiquer un niveau moyen bas. | ||||
| 10 | Cette valeur permet d'indiquer un niveau moyen élevé. | ||||
| 11 | Cette valeur permet d'indiquer un niveau très élevé. | ||||
| 7 | P (Present segment) | Ce champ permet d'indiquer si le descripteur est valide : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer que le descripteur n'est pas valide. | ||||
| 1 | Cette valeur permet d'indiquer que le descripteur est valide. | ||||
| 06h | 2 octets | Ces cellules ne sont pas utilisé par le 80286. | |||
| La taille du descripteur de segment pour les 80286 est de 8 octets | |||||
Descripteur de segment pour les 80386
| Déplacement | Taille | Description | |||
|---|---|---|---|---|---|
| 00h | 1 octet | Cette cellule permet d'indiquer la partie base de la longueur du segment de 20 bits. | |||
| 01h | 1 octet | Cette cellule permet d'indiquer la partie haute de la longueur du segment de 20 bits. | |||
| 02h | 1 octet | Cette cellule permet d'indiquer la partie base de l'adresse du segment de 32 bits. | |||
| 03h | 1 octet | Cette cellule permet d'indiquer la partie moyen de l'adresse du segment de 32 bits. | |||
| 04h | 1 octet | Cette cellule permet d'indiquer la partie haute de l'adresse du segment de 32 bits. | |||
| 05h | 1 octet | Cette cellule permet d'indiquer les attributs du segment : | |||
| Bit | Nom du champ | Description | |||
| 0 | A (Accessable) | Ce champ permet d'indiquer le bit d'accès : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer que le segment n'est pas accessible. | ||||
| 1 | Cette valeur permet d'indiquer que le segment est accessible. | ||||
| 1 | R (Readable segment) / W (Writable) | Ce champ permet d'indiquer si le segment est lisible ou écrivable : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer que la lecture (segment de code) ou l'écriture (segment de données) est désactivé (active l'exécution seulement). | ||||
| 1 | Cette valeur permet d'indiquer que le lecture (segment de code) ou l'écriture (segment de données) est activé. | ||||
| 2 | C (Control Bit) / ED (Expand Down) | Ce champ permet d'indiquer le bit de contrôle ou extensible : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer que les règles de fonctionnement des segments via un pont, en utilisant PL si segment de code ou extensible si segment de données. | ||||
| 1 | Cette valeur permet d'indiquer que le segment peut être appelé immédiatement en utilisant un CALL FAR à partir du même ou de plusieurs segments privilégiés si segment de code ou pas extensible si segment de données. | ||||
| 3 | E (Extended Type of Segment Descriptor) | Ce champ permet d'indiquer type de segment de segment étendue | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer un segment de données. | ||||
| 1 | Cette valeur permet d'indiquer un segment de code. | ||||
| 0 à 3 | TYPE | Ce champ permet d'indiquer le type si le champ «S» (descripteur de contrôle) à la valeur 0 : | |||
| Valeur | Description | ||||
| 0000 | Cette valeur n'est pas utilisé. | ||||
| 0001 | Cette valeur permet d'indiquer un TSS disponible (style 80286). | ||||
| 0010 | Cette valeur permet d'indiquer un LDT. | ||||
| 0011 | Cette valeur permet d'indiquer un TSS occupé (style 80286). | ||||
| 0100 | Cette valeur permet d'indiquer un appel par pont (style 80286). | ||||
| 0101 | Cette valeur permet d'indiquer un tâche par pont (style 80286). | ||||
| 0110 | Cette valeur permet d'indiquer une interruption par pont (style 80286). | ||||
| 0111 | Cette valeur permet d'indiquer une trappe par pont (style 80286). | ||||
| 1000 | Cette valeur n'est pas utilisé. | ||||
| 1001 | Cette valeur permet d'indiquer un TSS disponible (style 80386). | ||||
| 1010 | Cette valeur est réservé. | ||||
| 1011 | Cette valeur permet d'indiquer un TSS occupé (style 80386). | ||||
| 1100 | Cette valeur permet d'indiquer un appel par pont (style 80386). | ||||
| 1101 | Cette valeur est réservé. | ||||
| 1110 | Cette valeur permet d'indiquer une interruption par pont (style 80386). | ||||
| 1111 | Cette valeur permet d'indiquer une trappe par pont (style 80286). | ||||
| 4 | S (System) | Ce champ permet d'indiquer le type du système : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer un descripteur de contrôle. | ||||
| 1 | Cette valeur permet d'indiquer un segment de code ou de données. | ||||
| 5 à 6 | DPL (Descriptor Privilege Level) | Ce champ permet d'indiquer le niveau de privilège : | |||
| Valeur | Description | ||||
| 00 | Cette valeur permet d'indiquer un niveau très bas. | ||||
| 01 | Cette valeur permet d'indiquer un niveau moyen bas. | ||||
| 10 | Cette valeur permet d'indiquer un niveau moyen élevé. | ||||
| 11 | Cette valeur permet d'indiquer un niveau très élevé. | ||||
| 7 | P (Present segment) | Ce champ permet d'indiquer si le descripteur est valide : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer que le descripteur n'est pas valide. | ||||
| 1 | Cette valeur permet d'indiquer que le descripteur est valide. | ||||
| 06h | 1 octet | Cette cellule permet d'indiquer la partie haute de la taille, la granularité et la dimension : | |||
| Bit | Nom du champ | Description | |||
| 0 à 3 | Ce champ permet d'indiquer les bits de 19 à 16 du de la longueur d'un segment de 20 bits. | ||||
| 4 | X | Ce champ est disponible pour les systèmes d'exploitation. | |||
| 5 | Ce champ vaut toujours 0. | ||||
| 6 | D (Dimensions) | Ce champ permet d'indiquer la dimension du segment : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer un segment de 16 bits. | ||||
| 1 | Cette valeur permet d'indiquer un segment de 32 bits. | ||||
| 7 | G (Granularity) | Ce champ permet d'indiquer la granularité : | |||
| Valeur | Description | ||||
| 0 | Cette valeur permet d'indiquer que la limite de segment est calculé en octets (pouvant aller jusqu'à 220 octets). | ||||
| 1 | Cette valeur permet d'indiquer que la limite de segment est calculé en page de 4 Ko (pouvant aller jusqu'à 232 octets). | ||||
| 07h | 1 octet | Cette cellule permet d'indiquer la partie très haute de l'adresse du segment de 32 bits. | |||
| La taille du descripteur de segment pour les 80386 est de 8 octets | |||||
Dernière mise à jour : Lundi, le 20 mai 2019