• 虛幻模式

    編輯
    本詞條由“匿名用戶” 建檔。

    虛幻模式

    編輯

    在x86計算中,虛幻模式、大實模式、巨型實模式、扁平實模式或巫毒模式是實模式的一種變體,其中一個或多個段描述符已加載非標準值,如32位限制允許訪問整個內存。與其名稱相反,它不是x86處理器可以運行的單獨尋址模式。它用于80286和更高版本的x86處理器。

    概述

    編輯

    出于效率原因,80286和所有更高版本的x86處理器在計算有效內存地址時使用存儲在其內部段描述符緩存中的基地址、大小和其他屬性,即使在實模式下也是如此。因此,對內部段描述符的修改允許在實模式下更改段的某些屬性,例如可尋址內存的大小。這種技術被廣泛使用,并得到所有英特爾處理器的支持。

    HIMEM.SYS使用此功能來尋址擴展內存,除非將DOS切換為在與虛幻模式不兼容的虛擬8086模式下運行。

    極少數使用虛幻模式的游戲之一(如果不是xxx的話)是《創世紀VII》。

    BIOS代碼使用虛幻模式,因為這是現代英特爾處理器的初始模式。此外,英特爾386SL和更高版本處理器中的系統管理模式(SMM)將處理器置于巨大的實模式。

    虛模式下的程序可以調用為實模式(BIOS、DOS內核和驅動程序)編程的16位代碼,而無需任何thunking。這使得虛幻模式驅動程序比DPMI驅動程序更簡單。然而,虛幻模式與Windows3.x/9x/NT和OS/2等保護模式操作系統不兼容。

    大實模式有一個1MB的代碼段和一個4GB的數據段。

    一些引導加載程序(例如LILO)使用虛幻模式訪問最多4GB的內存。

    啟用虛幻模式

    編輯

    要將80386或更高版本的微處理器置于虛模式,程序必須首先進入保護模式,在GDT或LDT中找到或創建平面描述符,使用相應的保護模式選擇器加載一些數據段寄存器,然后切換回真實模式。返回實模式后,處理器將繼續使用在保護模式下建立的緩存描述符,從而允許從實模式訪問4GiB的擴展內存。

    80286微處理器只能在未記錄的指令LOADALL的幫助下進入虛幻模式,以修改隱藏段基址寄存器以指向1MiB以上的源或目標內存位置

    從80386開始,實模式程序可以使用帶有地址大小覆蓋前綴的32位寄存器。這允許程序使用像DS:這樣的地址。在普通實模式下,如果EBX超過0xFFFF,則會發生故障。在虛幻模式下,允許訪問。

    虛幻模式

    虛幻模式的變種

    編輯

    如上所述,虛幻模式通常涉及使用一個或多個數據選擇器來更有效地尋址內存中的數據。這是常見的做法,通常稱為平面實模式或大實模式。巨大的實模式是一種變體,其中代碼段也擴展到4GiB。

    此外,通過從32位屬性(D位)設置為1的描述符加載代碼選擇器(CS)來獲得虛幻模式的特殊情況。這種很少使用的變體具有一些優點,主要是因為它可以避免在16位代碼段中使用32位尋址時通常需要的操作數大小覆蓋前綴,但設置起來更加困難。由于實模式中斷不會自動保留擴展指令指針(EIP)的高16位,因此代碼需要適合代碼段的低位部分,或者能夠以某種方式保留和恢復EIP的高位。此外,如果要調用使用16位代碼的BIOS或DOS中斷函數,則需要進行模式切換來來回切換D位。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/136232/

    (0)
    詞條目錄
    1. 虛幻模式
    2. 概述
    3. 啟用虛幻模式
    4. 虛幻模式的變種

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久