Другий урок захищеного режиму.
Попередні - див. "Уроки захищеного режиму x86. Урок 0 та 1".
Базою для цих матеріалів служать уроки уроки захищеного режиму Алексея Фрунзе.
Ліцензія на код -- GPL2+, ліцензія на тексти -- GFDL.
Довідкова інформація взята з відкритих джерел на просторах Інтернету, зокрема з офіційних мануалів Intel.
Традиційне і очевидне -- жодних гарантій.
Довідкова інформація взята з відкритих джерел на просторах Інтернету, зокрема з офіційних мануалів Intel.
Традиційне і очевидне -- жодних гарантій.
Урок номер 2
Створюємо GDT. Поміщаємо туди три дескриптори сегментів, які співпадають з відповідними сегментами реального режиму -- сегмент коду, сегмент даних та сегмент стеку. Будуються вони наступним чином: база - CS/DS/SS*10h, ліміт - 0xFFFFh, грануляція - байтова. Крім того, створюємо сегмент що відповідає буферу відеопам'яті -- база 0xB8000h. Всі сегменти - 16-бітні. Створивши таку GDT, переходимо в захищений режим, виводимо на екран повідомлення, "Hello from PMode!", виходимо з нього та завершуємо програму. Так як сервіси BIOS чи DOS нам недоступні, вивід на екран здійснюємо звертаючись безпосередньо до відеопам'яті.
Описано (болдом виділено те, що безпосередньо відноситься до захищеного режиму):
- Формат селектора сегменту.
- Формат дескрипторів, в коді програми - спосіб їх формування.
- Типи дескрипторів.
- Обчислення лінійної адреси.
- Тіньові частини сегментних регістрів.
- Відеопам'ять текстового режиму. Вивід на екран без використання сервісів BIOS чи операційної системи (дуже коротко).
- Керування вирівнюванням структур в Open Watcom.
Є як змішана C-asm так і чисто асемблерна реалізації.
Архів з файлами уроку: pm_02.zip.
Незначні зміни, доповнення та виправлення будуть вноситися прямо в цей файл, про що я старатимуся повідомляти.
На сьогодні все. Наступний урок буде присвячений IDT, введенню в обробку переривань і суміжним питанням.
Незначні зміни, доповнення та виправлення будуть вноситися прямо в цей файл, про що я старатимуся повідомляти.
На сьогодні все. Наступний урок буде присвячений IDT, введенню в обробку переривань і суміжним питанням.
Дякую за увагу
Якщо є запитання, виправлення, пропозиції - пишіть! Багато часу цьому приділяти, на жаль, не можу, але якщо з того буде комусь користь - спробуємо щось придумати.
Немає коментарів:
Дописати коментар