Gerçek dışı mod - Unreal mode

Olarak 86 işlem , gerçek olmayan modu , ayrıca büyük bir gerçek mod , büyük gerçek mod , düz gerçek mod veya büyü modu bir varyantı olan gerçek mod 32-bit gibi bir veya daha fazla kademeli bir tanımlayıcıları olmayan standart değerlerle yüklenmiş olan, tüm belleğe erişime izin veren sınırlar. Adının aksine x86 işlemcilerin çalışabileceği ayrı bir adresleme modu değildir. 80286 ve sonrası x86 işlemcilerde kullanılır.

genel bakış

Verimlilik nedenleriyle, 80286 ve sonraki tüm x86 işlemciler , gerçek modda bile etkin bellek adreslerini hesaplarken dahili segment tanımlayıcı önbelleğinde depolanan temel adresi, boyutu ve diğer öznitelikleri kullanır . Bu nedenle, dahili segment tanımlayıcısının bir modifikasyonu, adreslenebilir hafızanın boyutu gibi gerçek modda segmentlerin bazı özelliklerinin değiştirilmesine izin verir. Bu teknik yaygın olarak kullanılmaya başlandı ve tüm Intel işlemciler tarafından destekleniyor.

HIMEM.SYS , DOS gerçek dışı modla uyumlu olmayan bir sanal 8086 modunda çalışacak şekilde değiştirilmediği sürece, genişletilmiş belleği adreslemek için bu özelliği kullanır .

Gerçek dışı modu kullanan çok az oyundan biri -tek değilse de- Ultima VII idi .

Gerçek dışı mod, modern Intel işlemcilerin ilk modu olduğu için BIOS kodu tarafından kullanılır . Ayrıca, Intel 386SL ve sonraki işlemcilerdeki Sistem Yönetim Modu (SMM) , işlemciyi devasa gerçek moda yerleştirir.

Gerçek olmayan moddaki bir program, gerçek mod için programlanmış 16 bitlik kodu (BIOS, DOS çekirdeği ve sürücüleri) herhangi bir thunking olmadan çağırabilir . Bu, gerçek olmayan mod sürücüsünü bir DPMI sürücüsünden daha basit hale getirir . Ancak gerçek dışı mod, Windows 3.x/9x/NT ve OS/2 gibi korumalı mod işletim sistemleriyle uyumlu değildir.

Büyük gerçek mod, 1MB kod segmentine ve 4GB veri segmentine sahiptir.

Bazı önyükleyiciler ( LILO gibi ) 4 GB'a kadar belleğe erişmek için gerçek dışı modu kullanır.

Gerçek dışı modu etkinleştirme

80386 veya daha yüksek bir mikroişlemciyi gerçek olmayan moda koymak için, bir program önce korumalı moda girmeli , GDT veya LDT'de düz bir tanımlayıcı bulmalı veya oluşturmalı , veri segmenti kayıtlarından bazılarını ilgili korumalı mod "seçici" ile yüklemeli ve ardından geçiş yapmalıdır. gerçek moda geri dönün. Gerçek moda döndükten sonra işlemci, korumalı modda oluşturulduğu gibi önbelleğe alınmış tanımlayıcıları kullanmaya devam edecek ve böylece gerçek moddan 4 GiB genişletilmiş belleğe erişime izin verecektir .

80286 mikroişlemci, yalnızca belgelenmemiş LOADALL talimatının yardımıyla , gizli segment taban kayıtlarını 1 MiB'nin üzerindeki kaynak veya hedef bellek konumunu gösterecek şekilde değiştirmek için gerçek dışı moda getirilebilir .

80386'dan başlayarak, gerçek mod programları, Adres Boyutu Geçersiz Kılma Öneki ile 32 bitlik kayıtları kullanabilir. Bu, programların DS:[EBX] gibi bir adres kullanmasına izin verir. Normal gerçek modda, EBX 0xFFFF değerini aşarsa bir hata oluşur. Gerçek dışı modda erişime izin verilir.

Gerçek dışı modun çeşitleri

Yukarıda açıklandığı gibi, gerçek dışı mod genellikle bellekteki verileri daha verimli bir şekilde adreslemek için bir veya daha fazla veri seçicinin kullanılmasını içerir. Bu yaygın bir uygulamadır ve genellikle "düz gerçek mod" veya "büyük gerçek mod" olarak adlandırılır. "Büyük gerçek mod", kod segmentinin de 4 GiB'ye genişletildiği bir değişkendir.

Ek olarak, 32-bit özniteliği ("D" biti) bire ayarlanmış bir tanımlayıcıdan kod seçicinin (CS) yüklenmesiyle gerçek dışı modun özel bir durumu elde edilir. Bu nadiren kullanılan varyant bazı avantajlar sunar, çünkü esas olarak 16 bit kod segmentinde 32 bit adresleme kullanılırken normalde gerekli olan İşlenen Boyutu Geçersiz Kılma Öneklerinden kaçınmaya izin verir, ancak kurulumu daha zordur. Gerçek mod kesintileri, genişletilmiş talimat işaretçisinin (EIP) yüksek on altı bitini otomatik olarak korumadığından, kodun ya kod segmentinin düşük kısmına sığması ya da yüksek EIP bitlerini bir şekilde koruyabilmesi ve geri yükleyebilmesi gerekir. Ayrıca, 16 bit kod kullanan BIOS veya DOS kesme işlevleri çağrılacaksa, "D" bitini ileri geri değiştirmek için mod değiştirme gerekir. Bazı öykünücüler, gerçek dışı modun bu türevinde çalışan programların öykünmesini desteklemez.

Ayrıca bakınız

Referanslar

daha fazla okuma