有点疑问
从IA32中的相关章节我们可以了解到,当上电一切就绪后,CPU的状态其实是实模式,但是在寻址的时候却用了big real mode的寻址方式去做。因为reset后CPU的CS默认是段选择子,而且它的值是F000H。当我们用F000H去选择CS的时候,CPU在计算地址的时候是用了CS的base(为0FFFF0000H),且此时的EIP默认是FFF0H,所以CPU计算好后才是从FFFFFFF0H处去取指令。一般我们在BIOS中都在这里是用了FAR jump来显示地修改CS的值,这样就可以真正的进入real mode模式了。CPU寻址才会是segment:offset的寻址方式。相应章节在IA32 programming guide 3A的Processor Built-In Self-Test (BIST)。cpu 第一条指令是在0xFFFFFFF0是毫无疑问的,这就要求rom 必须映射在这个地址上,这里一般就是far jump, 来显示地修改CS的值,这样就可以真正的进入real mode模式了, 而在这种模式下寻址只能到1m 多一点, 那他怎样能执行rom 里的代码, 除非是rom 被映射到两个地址上了。 是不是这样呢,那位高人指点一下。
刚刚找到答案
现在解释一下地址影射问题. N/B 和S/B 组合的MAP机制会把4G-8G到4G的部分地址空间和E0000-FFFFF的空间MAP 到LPC上. 同时LPC上挂 FWH EEPROM(BIOS ROM)能够解码FF00 0000 -FFFF FFFF和0000 0000-00FF FFFF两部分地址. 这也就是CPU 为什么能够在两种寻址方式下都能够寻址EEPROM的原因 谢谢楼主的贴子,学习下。。。 为了学习。
页:
1
[2]