为什么 MOV CR0 和 JMP 指令必须来自切换到保护模式时身份映射的页面?

0xf*_*xff 2 paging x86 assembly protected-mode osdev

为什么我们必须将mov cr0jmp指令放入身份映射的页面中?

我一直在使用谷歌搜索这个问题,但我无法理解结果。

Bre*_*dan 5

当启用保护模式(而不是启用分页)时;您不需要确保页面是身份映射的。

当启用分页(可能同时启用保护模式)时,CPU 将尝试mov cr0mov cr0. 处理这个最简单的方法是对页面进行身份映射,这样mov cr0物理内存之后的指令也将是mov cr0虚拟内存之后的指令。然而; 这不是严格要求的。例如,如果您将 安排mov cr0在页面的最后一个字节中(以便在启用分页后立即执行的指令将位于不同页面的开头),则包含 的页面mov cr0不需要是身份映射,下一页也不需要进行身份映射。