Intel ARCHITECTURE IA-32 User Manual Page 92

  • Download
  • Add to my manuals
  • Print
  • Page
    / 636
  • Table of contents
  • BOOKMARKS
  • Rated. / 5. Based on customer reviews
Page view 91
3-12 Vol. 3A
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 information. Segment
descriptors are typically created by compilers, linkers, loaders, or the operating system or exec-
utive, 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 interprets 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 to the segment limit. Offsets greater than the segment limit
generate general-protection exceptions (#GP). For expand-down segments, the
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
TypeS
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)
Page view 91
1 2 ... 87 88 89 90 91 92 93 94 95 96 97 ... 635 636

Comments to this Manuals

No comments