I happen to be here for trying to understand the BIOS concept in detail. Perhaps, it is a bit of late after the arguments among the three contributors. However, I would like to offer my own research and understanding to make a conclusion for the argument so as to help the future readers. In conclusion, I tend to agree with the interpretations from 糯米鸡 with my words as follows: 1. Current x86 processors fetch from the physical address 0xFFFFFFF0, instead of the address FFFF:0000 (or FFFF0h in linear notation) for the 8086 processor and 0x00FFFFF0 (just below 16Mb) for the 80286 processor. (There are numerous references to show FFFF:0000 is used for illustration of very old 8086). 2. These particular addresses are called “reset vector” carrying a far jump instruction. Therefore, in nature, the remark from 詩魂 (44# 電腦開發者預先編好了供系統啟動使用的啟動程式,把它們存放在ROM中,並安排它到一個固定的位置,即FFFF:0000,CPU就從BIOS中獲得了啟動所需的指令集...... 所以我指的並不是CPU抓取(cpu認)的第一個指令位址,) does not quite make a sound logic. 3. “The first instruction that is fetched and executed following a hardware reset is located at physical address 0xFFFFFFF0.” This is the first sentence omitted by onlylonly from his quotation, which supports the argument from 糯米鸡 (regardless the real mode or the protected mode) and reasons why I conclude the remark from 詩魂 abovementioned being not very sound. 4. In a cold boot, the reset vector either FFFF:0000 or 0xFFFFFFF0 is pointing to the beginning of the BIOS codes.
Regards |