В то время как инструкция lgdt
- используемая для настройки GDT - принимает m16&32/64
в качестве операнда - инструкция lldt
принимает операнд r/m16
.
Расшифровка жаргона означает, что lgdt
получает указатель на структуру, содержащую размер GDT
и базовый адрес.
С другой стороны, lldt
возьмите селектор сегмента - этот селектор сегмента должен иметь поле TI
(индикатор таблицы), установленное от 0 до , в GDT
.
Короче говоря, LDT
настроен не с базовым адресом и размером, подобным GDT
, а с дескриптором сегмента в GDT - так что это зависит от GDT
.
Тип сегмента, выбранного селектором сегмента, заданного для lldt
, должен иметь тип LDT (десятичное значение 2).
Если какое-либо из вышеперечисленных условий не выполняется, поднимается #GP.
Для данного аппаратного потока и заданного момента времени может быть только один LDT
и один GDT
активный.
Однако ОС может позже изменить активное значение LDT
или GDT
(редко) на основе своей собственной политики (например, для определенных процессов).
Однако ОС редко полностью меняет GDT
и обычно предварительно заполняет его всеми необходимыми дескрипторами сегментов, включая все необходимые LDT
с.
В любом случае, GDT
может содержать несколько дескрипторов сегмента LDT
, но только один активен в любой момент времени для каждого аппаратного потока.