windows游戏编程<三>X86实模式和保护模式
来源:互联网 发布:c语言二进制形式输出 编辑:程序博客网 时间:2024/05/22 03:38
本系列文章由jadeshu编写,转载请注明出处。http://blog.csdn.net/jadeshu/article/details/22309359
作者:jadeshu 邮箱: jadeshu@qq.com 欢迎邮件交流
X86实模式下
在实模式下,寻址一个内存地址主要是使用段和偏移值,段值被存放在段寄存器中(如ds),并且段的长度被固定为64KB。段内偏移地址存放在任意一个可用于寻址的寄存器中(如si)。因此,根据段寄存器和偏移寄存器中的值,就可以算出实际指向的内存地址
X86 32位保护模式
在保护模式运行方式下,段的寄存器中存放不再是被寻址段的基地址,而是一个段描述符表(Segment Descriptor Table)中某一描述符项在表中的索引值。索引值指定的段描述符项中含有需要寻址的内存段的基地址、段的长度值和段的访问特权级别等信息。寻址的内存位置是由该段描述符项中指定的段基地址值与一个段内偏移值组合而成。段的长度可变,由描述符中的内容指定。可见,和实模式下的寻址相比,段寄存器值换成了段描述符表中相应段描述符的索引值以及段表选择位和特权级,称为段选择符(Segment Selector),但偏移值还是使用了原实模式下的概念。这样,在保护模式下寻址一个内存地址就需要比实模式下多一个环节,即需要使用段描述符表。这是由于在保护模式下访问一个内存段需要的信息比较多,而一个16位的段寄存器放不下这么多内容。
示意图如下图所示。注意,如果你不在一个段描述符中定义一个内存线性地址空间区域,那么该地址区域就完全不能被寻址,CPU将拒绝访问该地址区域。因而得到了保护,由此而得名
0 0
- windows游戏编程<三>X86实模式和保护模式
- x86 保护模式编程
- X86 实模式和保护模式
- windows游戏编程<四>X86 32位保护模式下的内存管理概述(一)
- windows游戏编程<六>X86 32位保护模式下的内存管理概述(二)
- 80x86寻址方式 -- 实模式和保护模式
- X86保护模式编程总结(1)
- X86保护模式编程总结(2)
- X86保护模式编程总结(3)
- X86保护模式编程总结(4)
- X86保护模式编程总结(5)
- X86保护模式编程总结(6)
- X86保护模式编程总结(7)
- X86保护模式编程总结(8)
- x86 实模式与保护模式
- 80X86 保护模式
- 80x86保护模式
- 80x86保护模式
- 几种常见的排序算法
- VS2010安装部署打包说明(快捷方式创建和卸载设置)
- windows游戏编程<二>地址
- C调用C++函数接口
- HTML列表(list),这个比较重要的一个知识!
- windows游戏编程<三>X86实模式和保护模式
- ZJU PAT 1019 数字黑洞
- question
- 革命Hadoop,Spark
- android 多媒体文件关联之MIME TYPE
- 从vs2010转换项目到vs2012
- 数据库sharding系列好文收藏
- cmake
- Spring MVC和Struts的比较