关于BIOS的入口地址0xFFFF0的介绍

电脑技巧4年前发布
13 0 0

一直都说启动通电以后,将CS设定为0xFFFF,IP设定为0x0000,那样构成的地址便是0xFFFF0,而这一便是BIOS的通道地址,以后CPU读取这一地址的编码,随后就吧啦吧啦的进行实行下来了。

如今想要知道这一地址0xFFFF0是在主板上呢,或是在内存上。惦记着如果是统一编址得话,就可能是去读取主板上的ROM,可是去看书上的图,有好像在RAM中,如果是在 内存 中,那是什么时候,由哪段程序将ROM中的程序流程读取到内存中的。自身猜得话,应当这一环节是确定的硬件配置完成的,将ROM中的全部具体内容拷到内存中最大位那一段中,以后,0xFFFF0就必定就是指内存中的地址了。

百度了一下,有一篇文章就是这一的。

640KB~1MB 上台内存(这一地区的地址分派给ROM,相对应的384KB的RAM被屏蔽。说白了的身影内存技术性,便是把ROM具体内容读取到相匹配地址的RAM中,之后系统软件就从RAM中读取数据信息,而不是从原先的ROM读取数据信息,进而提高速度。)

1MB~ 拓展内存

注:

Shadow RAM也称之为"身影内存",是因为提升计算机软件高效率而采取的一种专业技术性,所运用的物理学集成ic依然是CMOS DRAM(动态性随机存取储存器,参考这书后边的具体内容)集成ic。Shadow RAM占有了系统主存的一部分地址室内空间。其编址范畴为C0000~FFFFF,即是1MB主存中的768KB~1024KB区域。这一地区通常也称之为内存 保留区,可执行程序不可以立即浏览。Shadow RAM的基本功能便是是用于储放各种各样ROM BIOS的具体内容。也就是拷贝的ROM BIOS具体内容,因此又它称之为ROM Shadow,这与Shadow RAM的含意一样,指得是ROM BIOS的"身影"。如今的计算机软件,只需一加电启动,BIOS信息内容便会被运载到Shadow RAM中的特定地区里。因为Shadow RAM的物理学编址与相匹配的ROM同样,因此当必须浏览BIOS时,只需浏览Shadow RAM而无须再浏览ROM,这就能大大的加速计算机软件的计算時间。通常浏览ROM的時间在200ns上下,浏览DRAM的時间低于100ns、60ns, 乃至更短。

在计算机软件运作期内,读取BIOS中的数据信息或读取BIOS中的功能模块的实际操作将是非常经常的,选用了Shadow RAM技术性后,毫无疑问进一步提高了工作效能。

386 以前与386以后,这一地址是不一样的,但都是在系统软件内存的最大 地址段。在386下以 FFFFFFF0H。由于CS段是16位的,EIP是32位的,为了更好地取得一个32位地址,386给CS段提升了几个字段,这也是潜藏的字段名,系统软件可以根据 GDT,IDT将变更段挑选子的字段名,这时地址变换就并不是 段地址偏移4位 偏位地址,反而是CS的Base字段名+偏位地址。

下边是一个事例

当系统软件通电后,系统软件会校准。这时在386之前的系统软件下CS=F000H,IP=FFF0H,Bios地址为段地址偏移4位 偏位地址挤即 F0000H FFF0H = FFFF0H

在386之前系统软件可寻址方式范畴为1MB即 00000H~FFFFFH

在386下CS=F000H,IP=FFF0H,这也是不会改变的,可是这时,CScs中的主要内容为:

Selector = F000H (这一便是你能够看见的那一部分具体内容)

这时掩藏的部位是不能用的,由于在实地址方式下,因此Bios地址与386之前的地址一样,

可是386可寻址方式范畴为4GB 即 00000000H~FFFFFFFFH,假如以这一地址(000FFFF0H)做为Bios地址得话,系统软件内存不持续,因而,386应用硬件配置置1的形式将A20~A31地址线置1,就变为FFFFFFF0H,并以此来做为Bios地址。

这一置1的结论是,掩藏的一部分的一个字段名Base=FFFF0000H,这一实际操作并不是由变更描述符表完成的,由于都还没进到安全模式,并且描述符表都还没 创建。这也是硬件配置完成的,并且当开展一次段间自动跳转后,因为置1的結果就不可以储存,由于硬件开发是以会将其置0,因此当运行完FFFFFFF0H处的命令 jmp ,Base=00000000H,这时,Bios就应用1M下列内存。

有关通道地址的产生,有的文章内容上说成CS 0xFFFF和IP 0x0000的构成,有的文章内容上说成 CS 0xF000 和IP 0xFFF0的组成,我想可能是不一样硬件配置的复位不一样,只需最终产生的通道地址是 0xFFFF0就可以了。如果不是我猜的那般,那回过头在来填补吧。

© 版权声明

相关文章