双机调试
查看寄存器信息命令:r
段寄存器结构如下:
代码段寄存器 cs = 0008 = 1000B --> 索引:1, TI:00, RPL:0
查看GDT表:
kd> r gdtr gdtr=80b95000 kd> dq 80b95000 80b95000 00000000`00000000 00cf9b00`0000ffff 80b95010 00cf9300`0000ffff 00cffa00`0000ffff 80b95020 00cff300`0000ffff 80008b1e`400020ab 80b95030 834093f7`fc003748 0040f200`00000fff 80b95040 0000f200`0400ffff 00000000`00000000 80b95050 830089f7`d0000068 830089f7`d0680068 80b95060 00000000`00000000 00000000`00000000 80b95070 800092b9`500003ff 00000000`00000000
根据索引找到对应的代码段的描述符:00cf9b00`0000ffff
Base | G | D | L | AVL | LIMIT | P | DPL | S | TYPE | Base |
1 | 1 | 0 | 0 | 1 | 00 | 1 | 1011 | |||
00 | c | f | 9 | b | 00 |
Base | LIMIT |
0000 | ffff |
段基址:0000 0000
段大小:G为1 所以 FFFFF x 4KB 也就是4GB
默认操作数大小:D位为1,所以默认操作数大小以及默认寻址大小就是32位
64位代码段标志L位:0表示否
DPL:说明访问这个段,需要0环权限
S:为1,说明这是代码段或者数据段
TYPE:1(代码段) 0(非一致性代码段) 1(可读的) 1(此段已经被访问过了)
从加粗部分来看的话,这个描述描述的是一个0环代码段。