Главная » Файлы » Доклады » Доклады |
Регістри GDTR, LDTR, IDTR, TR і CPUID.Системні інструкції.
[ Скачать с сервера (3.86 Mb) ] | 13.02.2018, 23:42 |
Існує 4 регістри для управління пам’яттю: GDTR, LDTR, IDTR, TR, які вказують розміщення структур даних, що призначені для управління сегментами пам’яті. Для зчитування та завантаження цих регістрів існують спеціальні інструкції. Регістр GDTR(Global Destcriptor Table Register) призначений для зберігання 32-бітової базової адреси і 16-бітового обмежувача(table limit) таблиці для GDT. Базова адреса вказує лінійну адресу байта 0 GDT; обмежувач таблиці вказує кількість байтів в таблиці. Інструкції LGDT і SGDT, відповідно, зчитують і записують регістр GDTR. При увімкненні живлення або скиданні процесора, базова адреса встановлюється в значення по замовченню – 0 і обмежувач – FFFFH. Нова базова адреса повинна бути завантажена в GDTR як частина процесу ініціалізації процесора для операцій захищеного режиму(protected mode). Регістр LDTR(Local Destcriptor Table Register) зберігає 16-бітний селектор сегмента, 32-бітну базову адресу, 16-бітний обмежувач сегменту і атрибути дескриптора для LDT. Базова адреса вказує лінійну адресу байта 0 сегменту LDT; обмежувач сегменту вказує кількість байтів в сегменті. Інструкції LLDT і SLDT, відповідно, зчитують і запам’ятовують частину регістру LDTR – сегментний селектор. Сегмент, який містить LDT повинен мати описувач сегменту (segment descriptor) в GDT. Коли інструкція LLDT зчитує селектор сегменту в LDTR, базова адреса, обмежувач і атрибути дескриптора з LDT автоматично завантажуються в LDTR. При переключенні задачі, LDTR автоматично завантажується сегментним селектором і дескриптором для LDT нової задачі. Вміст LDTR автоматично не запам’ятовується до того, як не запишеться нова LDT інформація в регістр. При увімкненні живлення або скиданні процесора, базова адреса встановлюється в значення по замовченню – 0 і обмежувач – FFFFH. Регістр IDTR(Interrupt Descriptor Table Register) зберігає 32-бітову базову адресу і 16-бітовий табличний обмежувач для IDT. Базова адреса вказує лінійну адресу байту 0 IDT; табличний обмежувач вказує кількість байтів в таблиці. Інструкції LIDT і SIDT, відповідно, зчитують і запам’ятовують регістр IDTR. При увімкненні живлення або скиданні процесора, базова адреса встановлюється в значення по замовченню – 0 і обмежувач – FFFFH. Базова адреса і обмежувач можуть бути змінені під час процесу ініціалізації процесора. Регістр задач – TR(Task Register) - зберігає 16-бітовий селектор, 32-бітову базову адресу і атрибути дескриптора для TSS біжучої задачі. Він посилається на дескриптор TSS в GDT. Базова адреса вказує лінійну адресу байту 0 TSS; обмежувач сегменту вказує кількість байтів в TSS. Інструкції LTR і STR, відповідно, зчитують і зберігають сегментний селектор – частину TR. Коли інструкція LTR зчитує сегментний селектор в регістр задач, базова адреса, обмежувач, атрибути дескриптора з дескриптора TSS автоматично зчитуються з TR. При увімкненні живлення або скиданні процесора, базова адреса встановлюється в значення по замовченню – 0 і обмежувач – FFFFH. Коли відбувається переключення задачі TR автоматично завантажується сегментним селектором і дескриптором для нової задачі. Вміст TR автоматично не запам’ятовується до того, як не запишеться нова TR інформація в регістр. | |
Просмотров: 437 | Загрузок: 10 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |