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.