cr3=00000000001ad000
gdtr=fffff8003f677fb0
kd> !vtop 00000000001ad000 fffff8003f677fb0
Amd64VtoP: Virt fffff8003f677fb0, pagedir 00000000001ad000
Amd64VtoP: PML4E 00000000001adf80
Amd64VtoP: PDPE 0000000004209000
Amd64VtoP: PDE 000000000420afd8
Amd64VtoP: PTE 00000000042213b8
Amd64VtoP: Mapped phys 0000000005c77fb0
Virtual address fffff8003f677fb0 translates to physical address 5c77fb0.
kd> !pte fffff800`3f677fb0
VA fffff8003f677fb0
PXE at FFFFB158AC562F80 PPE at FFFFB158AC5F0000 PDE at FFFFB158BE000FD8 PTE at FFFFB17C001FB3B8
contains 0000000004209063 contains 000000000420A063 contains 0000000004221063 contains 8900000005C77963
pfn 4209 ---DA--KWEV pfn 420a ---DA--KWEV pfn 4221 ---DA--KWEV pfn 5c77 -G-DA--KW-V
----------------------------------------------------------------------------------------------------------
9-9-9-9-12分页
四级页表的两种叫法
PXE-PPE-PDE-PTE
PLM4E-PDPTE-PDE-PTE
手动拆分虚拟地址:
kd> .formats fffff800`3f677fb0
Evaluate expression:
Hex: fffff800`3f677fb0
Decimal: -8795029274704
Octal: 1777777600007731677660
Binary: 11111111 11111111 11111000 00000000 00111111 01100111 01111111 10110000
Chars: ....?g.
Time: ***** Invalid FILETIME
Float: low 0.904292 high -1.#QNAN
Double: -1.#QNAN
1 1111 0000 = 1f0
0 0000 0000 = 0
1 1111 1011 = 1fb
0 0111 0111 = 77
1111 1011 0000 = fb0
pagedir = CR3 = 00000000001ad000
PLM4E = pagedir + 1f0*8 = 00000000001adf80
PDPTE = *(QWORD*)PLM4E + 0*8 = 0000000004209000
PDE = *(QWORD*)PDPTE + 1fb*8 = 000000000420afd8
PTE = *(QWORD*)PDE + 77*8 = 00000000042213b8
Physical Address = *(QWORD)PTE + fb0 = 0000000005c77fb0