Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy
počítačové znalosti >> Hardware >> CPU >> .

S ktorým kódu zostavy môžete prepnúť CPU do chráneného režimu?

S jednou inštrukciou zostavy nemôžete priamo prepnúť do chráneného režimu. Je to viacstupňový proces, ktorý zahŕňa načítanie tabuľky globálnej deskriptora (GDT) a nastavenie príznaku PE v riadiacom registri CR0. Tu je zjednodušený príklad demonštrujúci kľúčové kroky v montáži (za predpokladu, že máte vopred definovaný GDT načítaný na konkrétnu adresu):

`` `Zostava

.Model byt, stdcall

.stack 100h

.data

Gdt_ptr dd gdt_table; Ukazovateľ na GDT

; ... (definujte svoju štruktúru GDT tu)

.cód

hlavný proc

; 1. Načítajte register GDT (GDTR) s adresou vášho GDT

lgdt [gdt_ptr]

; 2. Nastavte bit PE v registri CR0

Mov Eax, CR0

alebo eax, 1; Nastavte bit 0 (vlajka PE) na 1

MOV CR0, EAX

; 3. Prejdite do segmentu kódu definovaného pre chránený režim

JMP FAR PTR chránený_mode_entry

; ... (váš kód pre chránený režim sa začína tu)

chránený_mode_entry proc

; ...

opätovný

chránený_mode_entry endp

hlavný konc

hlavný

`` `

Vysvetlenie:

1. `lgdt [gdt_ptr]`: Táto inštrukcia načíta register tabuľky globálnych deskriptorov (GDTR) s adresou vášho GDT. GDT obsahuje deskriptory pre všetky segmenty v chránenom režime vrátane segmentov kódov, dátových segmentov a segmentov zásobníka.

2. `alebo eax, 1`: Týmto sa nastaví bit PE (povolenie ochrany) v registri CR0. Tento bit riadi prevádzkový režim CPU:0 pre reálny režim, 1 pre chránený režim.

3. Táto inštrukcia vykonáva vzdialený skok a prechádza CPU do chráneného režimu. „Far Ptr` naznačuje, že ide o skok do nového segmentu, ktorý je nevyhnutný pre prepínač režimu.

Dôležité úvahy:

* GDT nastavenie: Pred vykonaním tohto kódu musíte definovať svoj GDT. GDT by mal obsahovať deskriptory pre všetky segmenty, ktoré plánujete použiť v chránenom režime.

* chránený kód režimu: Po skoku by mal byť váš kód napísaný pre chránený režim. Zahŕňa to použitie segmentových selektorov na riešenie pamäte a použitie rôznych pokynov na správu pamäte.

* Skutočný režim boot: Tento kód predpokladá, že už ste v reálnom režime (16-bitový režim). Pred zadaním chráneného režimu musíte svoj systém zaviesť v reálnom režime.

Pamätajte: Toto je základný príklad na demonštračné účely. Budete ju musieť prispôsobiť svojim konkrétnym požiadavkám vrátane:

* Definovanie úplného a vhodného GDT.

* Nastavenie tabuľky deskriptora prerušenia (IDT).

* Implementácia správy pamäte chráneného režimu so segmentáciou a stránkovaním.

* Písanie chráneného modelu špecifického pre režim pre úlohy, ktoré musíte vykonať.

V príručkách Intel alebo AMD procesor nájdete komplexnejšie informácie o programovaní chráneného režimu.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené