linux 上电执行的第一条代码是在内存里吗?

来源:互联网 发布:明亡之后无华夏 知乎 编辑:程序博客网 时间:2024/06/05 00:52

 

摘自oldlinux:

上电执行的第一条代码是在内存里吗?

“访问的F000h : FFF0h是内存的地址还是存放bios的rom地址 ” 
  这个是由北桥内的一个寄存器设置的(具体的资料你可以去找一些芯片组的资料)。当北桥收到CPU外部的地址总线上的信号时,会根据这个寄存器内的值来决定是从内存里取内容还是把这个地址传送给南桥--因为BIOS是挂在南桥的FWH上的,然后由南桥来读取BIOS里的内容。
  由上面的描述可以看出,其实从0XE0000到0XFFFFF这段地址存在两个芯片,一个是ROM,一个是RAM,这也就是所谓的Shadow RAM
  并且这个Shadow RAM机制是由BIOS来控制的,BIOS通过在上面据说的寄存器里设定值来开启或者关闭Shadow RAM,BIOS程序刚开始执行的时候Shadow RAM并没有打开,这时默认访问到的地址F000h : FFF0h会是ROM内的BIOS,开启Shadow RAM后再访问这个地址就会读到RAM内的内容了!
  还有什么不理解的话请参考这篇讨论:
http://programmer-club.com/pc2020v5/Forum/ShowSametitleN.asp?URL=N&board_pc2020=assembly&index=122&id=5154&mode=&type_pc2020=sametitleLevel-2
原创粉丝点击