看到CSDN上面问到一个问题,BIOS执行第一句的时候到底是在RAM中执行,还是在ROM中执行的。http://topic.csdn.net/t/20061215/10/5232444.html
里面很多高手在讨论,有的人搬出最权威的书籍,有的自己做实验,甚至有人去量PCI和BIOS引脚的电平。看了这些回答,我很受用。首先,要知道ROM和RAM是统一编址的。那是不是上电后,在BIOS自检之前,BIOS将自己搬到RAM(内存)中去了呢,还是根本就是直接在BIOS里面取指令执行的呢?
现在有两个疑问:
1:如果是直接在BIOS ROM里面取指令执行,那么没有RAM程序是无法运行的,比如一些变量没有地方存?
2:如果是在RAM里面执行的,就说明是上电后,CPU将BIOS里面的代码搬到内存中然后在内存中执行的,那么我将内存条不插然后开机,蜂鸣器会报警。这正好说明了在使用内存之前,CPU还是运行了一段代码的(检测是否有内存),这段程序肯定是在BIOS里面执行的。从这个点来说,程序是可以再BIOS ROM里面执行的。
3:但是据书上说,在内存里面却是为BIOS分配了内存,这个内存到底是放BIOS程序和存变量使用,还是只是为了存放变量呢。
4:必须有内存条才可以进入BIOS设置,这又说明,运行BIOS应该是在R