windows中 GDTR和GDT关于快速调用的实现1
windows中 GDTR和GDT关于快速调用的实现1
一、全局表述表
为进一步理解上面我们讲的两条指令(sysenter,sysexit).,我在解释一个”全局段描述符表(Global Descriptor Table)“即GDT及其段寄存器之间的关系,CPU中的系统寄存器GDTR指向内存中的GDT,这是一个结构数组。数组中的每一个表象都是一个64位的KGDTENTRY数据结构,里面描述了段的起点和大小,保护模式,访问权限等信息。合在一起就是一个64位的段描述块。数组的大小位NUM_GDT,定义为28
GDT的定义
//
// GDT Entry Definition
//
typedef struct _KGDTENTRY
{
USHORT LimitLow;
USHORT BaseLow;
union
{
struct
{
UCHAR BaseMid;
UCHAR Flags1;
UCHAR Flags2;
UCHAR BaseHi;
} Bytes;
struct
{
ULONG BaseMid:8;
ULONG Type:5;
ULONG Dpl:2;
ULONG Pres