
在实模式下. 我们都知道,偏移地址已添加到段地址中. 在这里直接进入保护模式. (不考虑分页机制)
1. 首先,在保护模式下,以便与实模式分段机制兼容. 还使用片段处理. 全局描述符表(GDT)的引入用于注册地址,即与实模式不同,该地址可以随机指向. 如果要以保护模式访问地址(请参阅是否可以访问该地址),则必须先注册. 因此起到了保护作用.
2. 描述符表必须存储在内存中,同时必须有要访问的寄存器. 此处,添加了全局描述符表寄存器(GDTR),高32位指向描述符表的线性地址. (如果没有分页机制,则为物理地址). 第一个16位表是描述符(简而言之,它是描述符地址的某些特征,它占用8个字节,最大为8192个描述符,并且只有2到16的幂的空间),是GDT最大64kb).
3. 全局描述符表可以放在任何位置,但是cpu以实模式启动,因此只能访问1MB. 您可以将其放在此1MB中的任何位置. 同时进入保护模式时,可以再次更改表格.

4. 描述符为8个字节,为64位. 表示一些限制.
/访问内存/
1. 实模式和保护模式之间的切换是一个称为CR0的寄存器. (第一个位置是0或1)

2. 在实模式下以32位或更高的寄存器运行时,请使用前16位来表示段地址. 需要指出的是,在8086下(寄存器20位)的寻址是段地址* 16加上偏移地址,而32位cpu的寄存器都是32位或更高的cpu,这是在您发送对于16位段地址(后16位用0填充),它将自动* 16,即段地址直接是前20位,随后的12位全为0. 向后兼容.
3. 无论采用哪种模式,只要位于32位(高位)cpu中,这些原始的16位段寄存器(例如cs,ds,ip等)(不多一些)都不会保存段地址,但是细分选择器. 这些寄存器也被重命名,称为段选择器. (初始化地址后,请同时查看标志位. 如果以实模式(8086模式)运行,则段地址由32位的前20位表示,最大存储量为2到20的幂,并且高12位全为0. 以保护模式运行时32位全都派上用场了.
4.32位处理器的实际段寄存器(没有提到32位段寄存器有多少位. 过去,16位段寄存器仅用于存储段地址,而32位段寄存器并不是那么简单,我也不了解具体情况. )它由16位cs ds ip和前面的其他段选择器组成.

5. 传递给段选择器的是段选择器(16位)
6. 地址中指示的实数段地址=(表中描述符的偏移地址(偏移地址是索引号* 8)+表的基地址)(表的基地址以GDTR表示),然后将真实的段地址放入缓存中,如图第三步).
7. 实际地址=段(基)地址+偏移地址.

8. 不仅是数据. 指示也是如此.
9. 最终的主要区别在于,如果向后兼容性为20位,则32位寄存器仅使用前20位,而后12位均为0(无论如何,它们都不一定为0,因此不使用). 与16位兼容. 到16位.
您可以看到细分和分页:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-311589-1.html
昨天才买了1袋
但怎么玩你们说了就不算了
这年头