TacOS
0.2
|
Segment Descriptor (cf doc intel v3. 3.4.3)
#include <gdt.h>
uint8_t x86_segment_descriptor::available |
Un bit disponible pour nous...
uint16_t x86_segment_descriptor::base_address_15_0 |
Défini la position de l'octet 0 du segment dans les 4Gio de l'espace adressable linéaire
uint8_t x86_segment_descriptor::base_address_23_16 |
Suite de la base address.
uint8_t x86_segment_descriptor::base_address_31_24 |
Fin de la base address. Soit 32 bits ce qui correspond aux 4Gio adressables.
uint8_t x86_segment_descriptor::descriptor_type |
0 = system segment, 1 = code ou data segment
uint8_t x86_segment_descriptor::dpl |
Descriptor Privilege Level. 0 à 3. 0 pour le kernel et 3 pour les applis
uint8_t x86_segment_descriptor::granularity |
Granularité : Détermine l'échele du segment limit. 0 : c'est des bytes, 1 : c'est par 4kio
uint8_t x86_segment_descriptor::operation_size |
0 = 16bits, 1 = 32bits
uint8_t x86_segment_descriptor::present |
Indique si le segment est présent en mémoire (1) ou non (0)
uint16_t x86_segment_descriptor::segment_limit_15_0 |
Segment Limit 15:00. Spécifie la taille du segment. Le proc concatene les 2 champs segment limit pour former une valeur de 20 bits.
uint8_t x86_segment_descriptor::segment_limit_19_16 |
Suite du segment limit.
uint8_t x86_segment_descriptor::segment_type |
Cf 3.4.3.1 de la doc intel !
uint8_t x86_segment_descriptor::zero |
Bit réservé qui doit prendre la valeur 0.