双机调试

查看寄存器信息命令: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环代码段。
5268

被折叠的 条评论
为什么被折叠?



