- -+---- - -- + | Chráněný režim (Protected Mode) | + ---- ----+- - > Díl I. < Tak vás tu vítám. Tenhle miniseriál by se měl zabývat alespoň základním vysvětlením pojmů jako chráněný režim procesoru, DPMI, VCPI, A20 apod... Je určen spíš začátečníkům a mírně pokročilým v této oblasti, ostřílení braši v něm těžko najdou něco nového. Praktické informace budou pojaty z hlediska programování v Assembleru, teoretické informace jsou však na programovacím ja- zyku nezávislé. To by bylo k úvodu. . . . Kdokoliv, kdo zkoušel programovat paměťově náročnější věc (např. grafické viewery, editory nebo přehrávače různých hudebních modulů), došel časem k ná- zoru, že konvenční paměť nedostačuje. I pustil se tedy do zkoumání literatury k EMS a XMS. Udělal si jednoduché nebo složitější rutinky pro práci s pamětí nad 1 MB a byl skoro spokojen. Problém byl v tom, že v paměti musel být vždy nějaký ovladač, který tu či onu paměť zpřístupňuje. Když nebyl - program ne- mohl fungovat. A případně ještě neustálé testování, která z pamětí je vlastně přístupná a využitelná. I tak se náš zkroušený programátor pustil do hledání něčeho výhodnějšího. A doslechl se někde o chráněném režimu procesoru... . . . Na čem to běží? Chráněný režim je vlastní procesorům 286 a výše, plně využitelný je však až od procesoru 386 (to je jeden z důvodů, proč nyní spousta programů vyžaduje alespoň onu 386ku). Tento fakt je dán rozdílnou architekturou obou procesorů. Teprve procesor 386 je totiž 32-bitový a obsahu- je některé další důležité prvky, které zlepšují komfort při práci s chráněným režimem (o některých důvodech se zmíním jindy). [Z tohoto důvodu se i já budu zabývat chráněným režimem pro 386ky a výše. Některé příklady však poběží i na 286kách - na to upozorním.] Další omezení se týká levnější varianty procesoru 386 a to 386SX, který má vnější 16bitovou datovou sběrnici a 24bitovou adresovou sběrnici - adresová sběrnice šíře 24 bitů dovoluje připojit fyzickou paměť kapacity maximálně 16 MB. Procesory 386DX a výše mají adresovou sběrnici 32bitovou a tudíž mohou adresovat až 4 GB RAM. A snad jen aby nevzniklo zbytečné nedorozumění - u nových her, u kterých recenzenti uváděli, že pracují v protected modu, byla nejmenší možná velikost paměti 4MB. Od té doby jsem slyšel od různých lidí "zaručené" zprávy, že chrá- něný režim tuto velikost vyžaduje! NENÍ TO PRAVDA! Pro jeho spuštění stačí i základní velikost nutná pro spuštění klasického EXE souboru, který vytvoříte + několik pár bajtů navíc - ale rozhodně ne 4MB. Tato situace se ovšem týká čistého kódu v assembleru, neboť jiné překladače (kupříkladu Watcom C++ nebo Borland Pascal) používají vlastní rutiny pro správu chráněného režimu a jejich paměťové nároky jsou nejrůznější. > Příklad < Pro ty, které nudí teoretická stránka výkladu, jsem připravil nejjedno- dušší otestování, jestli se procesor už v chráněném režimu nachází - tato si- tuace může nastat v případě, že používáte nějaký manažer EMS paměti (např. EMM386 nebo QEMM386). V těchto příkladech bych rád pokračoval i v příštích dílech - pokud to bude možné. .286P ; Tento program vyžaduje alespoň procesor 286 - je nutné ; také nastavit instrukční sadu pro podporu chráněného ; režimu . . . ; Nějaký předcházející kód... Smsw AX ; Speciální instrukce chr. režimu pro načtení stavu proce- ; soru Test AX,1 ; Otestování prvního bitu - je již počítač v chráněném re- ; žimu? (Jestli ano, 1. bit = 1) Jnz @@V_Chráněném_režimu . . . ; Další kód... > Slovník pojmů < Jelikož ne všechno v textu vysvětluji úplně, zařazuji na závěr textu slovník použitých pojmů. Přesto však znalost některých předpokládám a nebudu se jim věnovat. • Chráněný režim (Protected mode) - speciální režim procesorů 80286 a výše, dovolující využívat veškerou volnou paměť fyzicky dostupnou, řídit práva jednotlivých programů při přístupu do paměti, vytvářet tzv. virtuální paměť, apod. Při jeho používání je možné a nutné použít několika dalších instrukcí pro podporu chráněného režimu. O tom by měl být tento miniseriál. P.S.: Pokud by se někomu zdálo, že jsem něco uvedl špatně nebo nedostatečně, budu rád, když se mi ozve, a já svoji chybu napravím - jsem taky jenom člověk. Valor výheň