2014-03-05 77 views
2

可能重複:Software initialization code at 0xFFFFFFF0H英特爾復位向量

當系統啓動(英特爾),復位向量的地址爲0xFFFFFFF0(大於4G少16個字節)(如在上述提到的鏈接)。該地址包含FAR JUMP到BIOS的位置。我看了答案,註釋和引用鏈接,也做了一些搜索,但還是不明白32位地址如何映射到16位(Real Mode)?

我的困惑是,在這個鏈接:http://www.starman.vertcomp.com/asm/bios/index.html,作者提到地址F000:FFF0(16字節小於1MB)包含JUMP到BIOS的位置。

  1. 0xFFFFFFF0如何映射到F000:FFF0?它甚至被映射了嗎?
  2. 如果電腦沒有物理的4G內存,假設它只有1G,那麼0xFFFFFFF0的地址在哪裏?

在此先感謝您的幫助。

回答

3

當我有機會時,我會用參考編輯這個。

386手冊指出地址線31-20在復位時處於高電平狀態直到遇到JMP,然後再次變爲低電平。映射並不是真的有更多的黑客。

頂部如果地址空間沒有RAM(在系統中有1GB的RAM)芯片組將映射ROM代碼而不是RAM到該地址。因爲在第一次通電時不會有代碼在那裏執行,所以它必須是非易失性的。

+0

如果有幫助,主板邏輯或'芯片組'確保復位向量(0xFFFFFFF0h)處的指令遠程跳轉到映射到系統BIOS入口點(0x0000:0x000F0000h)的內存位置。總之,每個「主板」都實施了這種「跳躍黑客」。 [感謝Gustavo Duarte的解釋。檢查他的智能博客:http://duartes.org/gustavo/blog/post/how-computers-boot-up/] – fante

+0

因此,如果您的32位系統中安裝了4 GB,'芯片組'邏輯將與最後16個字節的已安裝RAM以'跳轉0x0000:0x000F0000h'指令代碼。 – fante

+0

@fante因此0xffffff0h會跳轉到可能spi flash?和0x000F0000h將在閃存?你能鏈接的東西,這將是相對於閃存設備? –