assembly - 英特尔平板内存模型
问题描述
在英特尔平面内存模型中,总是使用 2 个 GDT 索引,CODE 段,DATA 段,我可以在平面内存模型中使用更多的 GDT 索引吗?我的要求是拥有一个带有 RO 的内存区域,该区域现在位于数据段中。
解决方案
是的,您可以使用尽可能多的 GDT 条目以供您使用。但是一次只能激活 6 个,因为只有 6 个段寄存器: CS SS DS ES FS GS
. 请注意,同一描述符可以加载到多个寄存器中。
此外,同一内存区域可以由多个段映射,但具有不同的属性。特别是,实际上要求 SS(堆栈)区域可读取/写入。如果它使用与 DS 相同的地址空间并且您希望 DS 是只读的,那么从 RW/RO 的角度来看,DS 至少与 SS 不同。
同样,为了方便,使用 MOVS/CMPS/SCAS/LODS 指令将 DS 和 ES 映射到同一个空间是很常见的。
推荐阅读
- android - 使用 registerForActivityResult 在没有权限的情况下获取联系人
- javascript - 真正的密码破解者 - Codewars 挑战 - Javascript
- react-native - 如何防止后退按钮在我的反应本机应用程序中隐藏我的键盘?
- sql - 在 SSRS 报表生成器中选择带参数的前 X 行
- github - 使用 GCP 的自动化 Github
- bazel - 构建 nuro_image 时如何确定使用哪个基础?
- google-apps-script - 突然:一天使用太多电脑时间的服务
- hash - 为什么将 f64 转换为 u64 然后再转换回 f64 会导致不同的值?
- javascript - html 中的 p5.js 不起作用(使用实例化)
- python - 当从前一个变量中减去新值时,如何中断?