- GDTR
-
GDTR (англ. Global Descriptor Table Register — регистр глобальной дескрипторной таблицы) — специальный 48-битный регистр, который описывает местоположение и размер таблицы, содержащей дескрипторы. Он появился вместе с механизмом защиты в 80286 моделях процессоров как сегментный механизм защиты.
Регистр содержит два поля: первое поле — первые 32 бита, описывают линейный адрес, по которому должна быть расположена дескрипторная таблица, а последние 16 бит — лимит, определяющий размер таблицы в байтах. Каждый дескриптор занимает в памяти по 8 байт, потому лимит всегда должен вычисляться так: limit = 8*n — 1, где n — количество дескрипторов.
При инициализации операционной системы глобальная дескрипторная таблица обычно создаётся на полное количество дескрипторов (limit = 65535), или 8192 дескрипторов. Затем вычисляется физический адрес начала таблицы, и загружается регистр GDTR специальной ассемблерной инструкцией LGDT (англ. Load GDT):
Mov AX, GDT_Limit Push AX Mov EAX, GDT_Base Push EAX Mov BP, SP LGDT qword [SS:BP] ; Не забывайте, что стек растёт ''вниз''!
После включения механизма защиты начинает действовать селекторная система адресации, вместо сегментной, и использоваться GDT.
См. также
Источники
- Ассемблер для 32-разрядных процессоров: от i386 до Pentium 4
- http://www.intel.com/products/processor/manuals/[уточнить]
Категория:- Программирование x86
Wikimedia Foundation. 2010.