Descriptor: Difference between revisions

[unchecked revision][unchecked revision]
Content deleted Content added
New page: Descritors are describing System Segments, Memory Segments and Gates. == System Segments == {| {{wikitable}} ! Name ! Bit ! Full Name ! Description |- ! Limit | 0..15 || Limit 0..15 || Me...
 
No edit summary
 
(14 intermediate revisions by 8 users not shown)
Line 1:
DescritorsDescriptors are describing System Segments, Memory Segments and Gates.
 
== System SegmentsSegment Descriptor ==
{| {{wikitable}}
! Name
Line 12:
|-
! BAddr
| 16..39 || Base Address 0..23|| PhysicalLinear address where the memory range begins.
|-
! Typ
Line 34:
|-
! DPL
| 45,46 || Descriptor Privilege Level || Specifies which [[Privilegprivilege Level]]level a process minimum must have to use this Descriptor.
|-
! P
| 47 || Present|| Set this to 1 to be able to access the segment, otherwise a #NP (Segment not Present) exception is generated on access.
| 47 || Present|| defines if this Descriptor is "present" in memory. s. [[Paging]].
|-
! Limit
Line 58:
|}
 
== Memory SegmentsSegment Descriptor ==
{| {{wikitable}}
! Name
Line 69:
|-
! BAddr
| 16..39 || Base Address 0..23|| PhysicalLinear address where the memory range begins.
|-
! A
Line 87:
|-
! DPL
| 45,46 || Descriptor Privilege Level || Specifies which [[Privilegprivilege Level]]level a process minimum must have to use this Descriptor.
|-
! P
| 47 || Present|| Set this to 1 to be able to access the segment, otherwise a #NP (Segment not Present) exception is generated on access.
| 47 || Present|| defines if this Descriptor is "present" in memory. s. [[Paging]].
|-
! Limit
Line 111:
|}
 
== Interrupt Gate Descriptor ==
{| {{wikitable}}
! Name
Line 124:
| 16..31 || Selector || [[Selector]] that specifies the segment of the function to call.
|-
! Reserved
! DWC
| 32..35 || Double Word Counter || .
|-
! 0
| 36..39 || - || Have to be 0.
|-
! TypType
| 40..43 || Gate Type || Possible interrupt gate types :
{| {{wikitable}}
| 0b0101=0x5 || [[#I386 Task Gate|Task gate]]
Line 145:
|-
! S
| 44 || Storage Segment || <b>= 0</b> for interrupt gates.
|-
! DPL
| 45,46 || Descriptor Privilege Level || Gate call protection. Specifies which [[Privilegprivilege Level]]level the calling process minimum should have.
|-
! P
| 47 || Present || canSet this to 1 to be setable to <b>0</b>access the segment, otherwise a #NP (Segment not Present) exception is generated foron [[Paging]]access.
|-
! Offset
| 48..63 || Offset 16..31 || Higher part of the offset.
|}
 
== Call Gate Descriptor ==
{| {{wikitable}}
! Name
! Bit
! Full Name
! Description
|-
! Offset
| 0..15 || Offset 0..15 || Lower part of the offset address (also known as pointer).
|-
! Selector
| 16..31 || Selector || [[Selector]] that specifies the code segment of the function to call.
|-
! ParamCnt
| 32..35 || uint32_t's to copy || Number of uint32_t stack arguments to copy on stack switch.
|-
! 0
| 36..39 || - || Have to be 0.
|-
! Type
| 40..43 || Gate Type || Possible call gate types :
{| {{wikitable}}
| 0b0100=0x4 || 16-bit [[#I386 Call Gate|Call gate]]
|-
| 0b1100=0xc || 32-bit [[#I386 Call Gate|Call gate]]
|}
|-
! S
| 44 || Storage Segment || <b>= 0</b> for gates.
|-
! DPL
| 45,46 || Descriptor Privilege Level || Gate call protection. Specifies which privilege level the calling process minimum should have.
|-
! P
| 47 || Present || Set this to 1 to be able to access the segment, otherwise a #NP (Segment not Present) exception is generated on access.
|-
! Offset
| 48..63 || Offset 16..31 || Higher part of the offset.
|}
 
 
 
[[Category:X86]]
[[Category:Memory Segmentation]]