问题:对于X86:实模式下,打开A20地址线,难道也不能寻址4G的地址空间吗?是不是只有进入保护模式,打开A20地址线才能寻址4G的地址空间呢?
对于其他CPU:对于目前其他类型的CPU,比如POWER PC,ARM这些CPU可能已经没有A20地址线问题了,当他们在实模式下,可以摆脱1M地址空间的限制吗?
回答:
实模式下也是可以访问1M以上的内存空间的。在CPU内部有个段描述符高速缓寄存器,寄存器内容分为三个部分:段基址(32bit),段界限(32bit),段属性(读,写,执行,存在等)。在实模式下:段基址 = Seg * 16, 段界限 = OFFFFh, 在保护模式下: 段基址 = 描述符基址, 段界限 =描述符界限。但无论在实模式下还是在保护模式下:最后得到的物理地址是一致的为:段基址 + 段偏移。 如果你想在实模式下防问1M以上的空间,那么你必须修改高速缓寄存器中段界限,但是在实模式下此值又不能修改,所以你必须先跳到保护模式下修改此值,然后再跳会实模式。只要你把段界限值修改到足够大,你就能访问相应的内存了。