Intel 253668-032US User Manual

Page of 806
Vol. 3   3-13
PROTECTED-MODE MEMORY MANAGEMENT
3.4.5 Segment 
Descriptors
A segment descriptor is a data structure in a GDT or LDT that provides the processor 
with the size and location of a segment, as well as access control and status informa-
tion. Segment descriptors are typically created by compilers, linkers, loaders, or the 
operating system or executive, but not application programs. Figure 3-8 illustrates 
the general descriptor format for all types of segment descriptors.
The flags and fields in a segment descriptor are as follows:
Segment limit field 
Specifies the size of the segment. The processor puts together the 
two segment limit fields to form a 20-bit value. The processor inter-
prets the segment limit in one of two ways, depending on the setting 
of the G (granularity) flag:
If the granularity flag is clear, the segment size can range from 
1 byte to 1 MByte, in byte increments.
If the granularity flag is set, the segment size can range from 
4 KBytes to 4 GBytes, in 4-KByte increments.
The processor uses the segment limit in two different ways, 
depending on whether the segment is an expand-up or an expand-
down segment. See Section 3.4.5.1, “Code- and Data-Segment 
Descriptor Types”
, for more information about segment types. For 
expand-up segments, the offset in a logical address can range from 0 
Figure 3-8.  Segment Descriptor
31
24 23 22 21 20 19
16 15
13
14
12 11
8 7
0
P
Base 31:24
G
D
P
L
Type
S
L
4
31
16 15
0
Base Address 15:00
Segment Limit 15:00
0
Base 23:16
D
/
B
A
V
L
Seg.
Limit
19:16
G
— Granularity
LIMIT — Segment Limit
P
— Segment present
S
— Descriptor type (0 = system; 1 = code or data)
TYPE — Segment type
DPL
— Descriptor privilege level
AVL
— Available for use by system software
BASE — Segment base address
D/B
— Default operation size (0 = 16-bit segment; 1 = 32-bit segment)
L
— 64-bit code segment (IA-32e mode only)