今天在看MiIsAddressValid函数时碰到一奇怪的地方看它计算PXE的偏移时一切正常 右移39位 得到PXE的Index(内核地址还有FFFF) 然后使用1FF 把头部的FFFF给去掉保留index 之后index×8+PXEbase 得到PXE的线性地址然后在看计算PPE的时候就奇了怪了先右移27位(>>30 ×8) 头部保留了FFFF(如果是内核地址) 完事直接and 1ffff8这个8可以想到是为了对齐*8后计算出的偏移 那么往前在推8位得到pxe的偏移(ff8) 那么剩余的这个1ff该如何理解呢? 这边计算的不应该是PPE的offset么? 为什么会and 1ffff8 而不是ff8 呢?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!