Регістр EFLAGS - це тридцятидвохрозрядний регістр стану, що містить групу позначок () статусу, контролю, і групу системних позначок (бітів). Початкове значення регістра — 00000002h. Біти 1, 3, 5, 15, і всі з 22 до 31 зарезервовані для майбутнього використання. Робота програм не має залежати від тих бітів.

Деякі з позначок EFLAGS можна редагувати напряму, використовуючи спеціальні інструкції. Немає інструкції, яка б дозволяла відстежити, чи редагувати стан всього регістра прямо. Проте, існують інструкції що дають змогу переміщувати групи позначок у стек і з нього чи в регістр EAX: LAHF, SAHF, PUSHF, POPF, POPFD. Після того, як вміст EFLAGS переміщено у стек чи EAX, позначки можна відстежити, і змінити за допомогою інструкцій маніпулювання бітами (BT, BTS, BTR, BTC).

При призупиненні задачі (з допомогою засобів багатозадачності), процесор автоматично зберігає стан регістра EFLAGS в сегменті стану задачі (TSS). При переході до нової задачі, процесор завантажує регістр EFLAGS, з даними з TSS нової задачі.

При виконанні викликів переривань, чи процедур винятків, процесор автоматично зберігає стан регістра EFLAGS, в процедурний стек. Коли переривання чи виняток обробляється переключенням на іншу задачу, позначки зберігаються в TSS.

При переході до 32 розрядної архітектури, були додані деякі позначки, але функції і розміщення старих не змінено. Як результат — зворотна сумісність з регістром архітектури x86 — FLAGS.

Позначки статусу Позначки статусу (біти 0, 2, 4, 6, 7, і 11) — індикатори результату роботи арифметичних інструкцій, таких як ADD, SUB, MUL, DIV. Функції позначок статусу:

CF (Carry Flag) Позначка переносу (біт 0) — піднімається, якщо арифметична операція генерує перенос, чи виходить за межі значущих бітів результату. Показує переповнення при операціях з беззнаковими цілими. PF (Parity Flag) Позначка парності (біт 2) — піднімається, якщо найменш значущий байт результату містить парне число одиничок. Інакше опускається. AF (Adjust Flag) Позначка підстройки (біт 4) — піднімається, якщо арифметична операція спричинює перенос, чи виходить за межі на три біти. Цей прапор використовується в арифметиці з двійково-десятковим представленням (BCD). ZF (Zero Flag) Позначка нуля (біт 6) — піднімається, якщо результат нуль. SF (Sign Flag) Позначка знаку (біт 7) — встановлюється рівним найбільш значущому біту результату, який є бітом знаку в знакових цілих. 0 — вказує на додатне значення, 1 — від'ємне. OF (Overflow Flag) Позначка переповнення(біт 11) — піднімається, якщо ціле число завелике додатне, чи замаленьке від'ємне (виключаючи біт знаку), щоб влізти в операнд призначення, в протилежному випадку опускається. Прапор сигналізує про стан переповнення, в знакововій цілій арифметиці.

Умовні інструкції Jcc (cc — condition code), SETcc, LOOPcc, і CMOVcc використовують ідентифікатори позначок статусу, як коди умов. Наприклад команда умовного переносу, яка виконує перенос якщо результат попередньої операції від'ємний: CMOVSF eax,ebx;

Позначка DF DF (Direction Flag) — позначка напрямку. Знаходиться в біті 10. Контролює рядкові інструкції: (MOVS, CMPS, SCAS, LODS, і STOS). Якщо позначка піднята, то рядкові інструкції виконують автодекремент (рядки обробляються від більших адрес до менших). Якщо вона опущена, то відбувається автоінкремент.

Інструкція STD піднімає цю позначку, а CLD — опускає.

Системні позначки і поле IOPL Системні позначки регістра EFLAGS контролюють операційну систему, і пристрої. Вони не мають змінюватись прикладною програмою. Функції системних позначок: IF (Interrupt enable flag) дозвіл переривання (біт 9) TF (Trap flag) пастка (біт 8) Піднімається щоб дозволити покроковий режим зневадження. Інакше цей режим відключений. IOPL (I/O priviledge level field) рівень пріоритету вводу-виводу. (біти 12 і 13). Чим менше рівень, тим більше повноважень має задача. Цей рівень можна модифікувати інструкціями POPF і IRET, викликаними на нульовому рівні. NT (Nested task) вкладена задача (біт 14). Контролює зв'язок перерваної і викликаної задачі. RF (Resume flag) продовження (біт 16). Контролює реакцію процесора на виключення зневадження. VM (Virtual mode) віртуальний режим (біт 17) Піднімається щоб запустити режим віртуального 8086. Щоб повернутись в захищений режим, його опускають. AC (Alignment check) перевірка вирівнювання (біт 18) Щоб ввімкнути перевірку вирівнювання підніміть цей прапор, і біт AM регістра CR0. Щоб вимкнути це, опустіть один з бітів. VIF (Virtual interrupt flag) (біт 19) VIP (Virtual interrupt pending) (біт 20) ID (Identification) (біт 21). Здатність програми змітити цю позначку означає підтримку інструкцій CPUID.

Примітки

Література Intel Architecture Software Developer’s Manual. volume1: Basic Architecture, Order Number 243190; Intel Architecture Software Developer’s Manual. volume3: System Programming, Order Number 243192;