GDT RAM LDT
------- ------- -------
53=es->| 50|---- A0000 | |<------| 50|
|-------| | |-------| |-------|
| 48| | 90000 | |<------| 48|
|-------| | |-------| |-------|
| 40| | 80000 | |<------| 40|
|-------| | |-------| |-------|
| 38| | 70000 | |<------| 38|<- ds=3F
|-------| | |-------| |-------|
| 30| | 60000 | |<------| 30|<- ss=37
|-------| | |-------| |-------|
ldtr ->| 28|- | 50000 | |<------| 28|
|-------| | | |-------| |-------|
| 20| | | 40000 | |<------| 20|
|-------| | | |-------| |-------|
| 18| | | 30000 | |<------| 18|
|-------| | | |-------| |-------|
tr ->| 10| | | 20000 | |<------| 10|
|-------| | | |-------| |-------|
| 08| | | 10000 | |<------| 08|<- cs=0F
|-------| | | |-------| |-------|
| ** 00| | ------->|invalid| | 00|
gdtr-> ------- | ------- ---> -------
| |
----------------------
** useless, null selector
Note: The digits within the tables are the offsets to each descriptor. The selector values ( CS=0F ) indicate which selector normally accesses the descriptor.
Note: Any selector containing the value 0-3 is the NULL selector which DOES NOT specify the first entry in the GDT. It is a place holder when a selector does not specify a descriptor. Any attempt to use the null selector results in a general protection exception.
Note: The descriptors in the LDT are 16-bit descriptors. This is one of the reasons that 16-bit programs still execute and fail in exactly the same manner as on previous versions of OS/2.