assembly - 为什么 MOV CR0 和 JMP 指令必须来自在切换到保护模式时进行身份映射的页面?
问题描述
为什么我们必须将mov cr0
andjmp
指令放入一个身份映射的页面中?
我一直在使用谷歌搜索这个问题,但我无法理解结果。
解决方案
启用保护模式(而不启用分页)时;您不需要确保页面是身份映射的。
当启用分页(可能同时启用保护模式)时,CPU 将尝试mov cr0
从mov cr0
. 处理这个问题的最简单方法是对页面进行标识映射,这样mov cr0
物理内存中的指令也将是mov cr0
虚拟内存中的指令。然而; 这不是严格要求的。例如,如果您将 安排mov cr0
在页面的最后一个字节中(以便在启用分页后立即执行的指令将位于不同页面的开头),则包含的页面mov cr0
不需要是标识映射,下一页也不需要进行身份映射。
推荐阅读
- firebase - 创建 24 小时后删除 Firestore 文档
- c++ - 像 c# 中的 ConcurrentBag 一样,cpp(MFC) 中有哪些可用的选项?
- php - 如何对这个动态创建的表中的每一列求和,如 excel
- jenkins - Github jenkins webhook 集成失败
- ruby - Clojure 相当于 ruby 的#methods 方法?
- reactjs - React TypeScript:将 base64 字符串保存到 useState
- c# - 将 JSON 反序列化为 C# 对象
- lambda - 为什么 ConcurrentModificationException 在不安全操作之后不抛出,而是在整个 forEach 循环之后抛出?
- c++ - 我该如何解决这个错误,它的原因是什么?
- ruby-on-rails - 有人可以帮我理解这一行代码吗?