Сучасні процесори Intel IA-32 у ПК

5.4. Привілейовані команди

Привілейовані команди, які впливають на системні структури даних, можуть використовуватися лише коли СPL=0. Якщо процесор виявляє одну з цих команд у той час, коли рівень СPL більше нуля, він викликає обробку порушення загального захисту (виняток #13). Такими командами є:

  • LGDT, LIDT, LLDT- завантаження значень у регістри дескрипторних таблиць;
  • LTR- завантаження регістру задач;
  • LMSW- завантаження молодшого слова регістру CR0 (Machine Status Word);
  • MOV CRn- завантаження та збереження керуючих регістрів;
  • MOV DRn- завантаження та збереження регістрів налагодження;
  • CLTS- скидання прапора перемикання задачі;
  • HLT- зупинка;
  • команди керування кешем;
  • RDMSR/WRMSR (Pentium+), MOV TRn(386,486) - команди роботи з машинно-залежними регістрами;
  • RDTSC (Pentium+)- читання лічильника часу (якщо CR4.TSD=0, то цю команду можна виконувати на будь-якому рівні привілеїв);
  • RDPMC (P6+)- читання лічильника продуктивності (якщо CR4.PCE=1, то цю команду можна виконувати будь-якому рівні привілеїв).

Крім привілейованих, існують інструкції, результат виконання яких залежить від поля IOPL у регістрі прапорів (I/O Privilege Level - рівень привілеїв введення-виведення): IN, INS, OUT, OUTS, CLI, STI. Механізм захисту процесора дозволяє виконувати ці інструкції, лише якщо завдання має достатні привілеї, тобто. CPL

В іншому випадку виконання інструкцій CLI та STI викликає виняток #13, а можливість виконання інструкцій звернень до портів залежить від бітової картки дозволу вводу-виводу.

Слід зазначити, що біти IF та IOPL не можуть бути змінені за допомогоюкоманди POPF, якщо вона виконується на рівні привілеїв відмінному від нуля, але при цьому порушення загального захисту не виникає.