четвер, 2 червня 2011 р.

Уроки захищеного режиму x86. Урок 4

Четвертий урок захищеного режиму. 

Попередні : 

Базою для цих матеріалів служать уроки уроки захищеного режиму Алексея Фрунзе
Ліцензія на код -- GPL2+, ліцензія на тексти -- GFDL.
Довідкова інформація взята з відкритих джерел на просторах Інтернету, зокрема з офіційних мануалів Intel.
Традиційне і очевидне -- жодних гарантій.

Урок номер 4
Та ж GDT, що і раніше. В IDT -- обробники всіх виключних ситуацій. Реалізовано їх як обгортки, що викликають один і той самий обробник. Обробник виходить з захищеного режиму, виводить тип виключення та його адресу  і закінчує програму. Виділений стек не створюється, тому stack fault (та можливо деякі інші) коректно ним не оброблятимуться. 

Описано:
  • Що таке переривання та виключення (exceptions).
  • Обробники переривань захищеного та реального режиму.
  • Шлюзи пасток, переривань та задач.
  • Спосіб виклик обробника в залежності від причини переривання.
  • Типи виключень -- збої (faults), пастки (traps) та "аварії" (aborts).
  • Дано перелік виключень, що можуть генеруватися процесором.
  • Формат коду помилки для тих виключень, що його генерують. Окремо описано код помилки для Page Fault.

Є як змішана C-asm так і чисто асемблерна реалізації.
Архів з файлами уроку: pm_04.zip. (Updated - 1.)
Незначні зміни, доповнення та виправлення будуть вноситися прямо в цей файл, про що я старатимуся повідомляти.

На сьогодні все. Наступний урок буде присвячений типам виключних ситуацій та переривань, і їх обробці.
Дякую за увагу

Якщо є запитання, виправлення, пропозиції - пишіть! Багато часу цьому приділяти, на жаль, не можу, але якщо з того буде комусь користь - спробуємо щось придумати.