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