Регистр признаков (флагов)

32-х битный регистр EFLAGS содержит группу флагов состояния, управляющий флаг и группу системных флагов. Некоторые флаги могут быть изменены напрямую с помощью специальных команд. Полностью регистр флагов не изменяется. После включения питания в нем записано число 0000002h

Рисунок 3 – Основная исполнительная среда микропроцессора с архитектурой IA32

Флаги состояния:

CF – флаг переноса

PF – флаг четности, устанавливается в «1», если младший значащий байт результата содержит четное число единиц

AF – корректирующий флаг, устанавливается если был перенос или заем из младшей тетрады в старшую (из старшей в младшую). Используется при выполнении операций двоично-десятичной арифметики. В иных моделях процессоров может называться CY.

ZF – флаг равенства 0 результата операции.

SF – флаг знака результата. Устанавливается равным старшему значащему биту результата. (0 – положительный результат, 1 – отрицательный результат)

OF – флаг переполнения. Устанавливается, если результирующее целое положительное слишком большое или отрицательное слишком маленькое. Этот флаг показывает условия переполнения в арифметике для целых чисел со знаком (в дополнительном коде).

Из вышеперечисленных флагов только CF может быть напрямую изменен.

DF – флаг направления, управляет строковыми командами. Если DF установлен в «1»,то при операциях со строками адреса уменьшаются (обработки строки идет с конца), если DF сброшен в «0» – адреса увеличиваются (обработка строки одет с начала).

Системные флаги – управляют операционной системой и исполняемой программой. Они не должны меняться прикладным ПО.

TF – флаг трассировки (trap flag), когда установлен в «1» – разрешает пошаговое исполнение программы

IF – флаг разрешения прерываний

IOPL – 2 бита, используются для разрешения или запрещения доступа к адресному пространству ввода/вывода. Приложение, пытающееся обратиться к пространству ввода/вывода должно обладать уровнем привилегий не более (т.е. меньше или равным) чем записано в этих битах. Всего поддерживается 4 уровня привилегий: 0 (операционная система), 1,2, (драйвера и программы обслуживающие ОС), 3 (прикладное ПО). В операционной системе Windows используется только 2 уровня привилегий: 0 (ядро ОС, драйвера уровня ядра и т.п.) и 3 (прикладное ПО).

NT – управляет цепочкой прерванных задач или цепочкой вызовов подпрограмм. Установлен в «1», если текущая задача связана с предыдущей, и сброшен в «0», если связи нет.

RF – управляет ответом процессора на отладочные исключения.

VM – флаг виртуального I8086. Для разрешения режима виртуального I8086 устанавливается в «1», сброс в «0» приводит к возвращению в защищенный режим.

AC – проверяет выравнивание слов в памяти. Установка этого флага и бита AM в регистре CR0 разрешает проверку выравнивания ссылок памяти; сброс этого флага и/или бита AM - отменяет проверку выравнивания.

VIF – виртуальный флаг прерывания.

VIP – виртуальный флаг обработки прерывания. Устанавливается ПО, процессору этот флаг доступен только для чтения. Если установлен, то прерывание обрабатывается, сброшен – никакое прерывание не обрабатывается.

ID – флаг идентификации. Возможность сбрасывать или устанавливать этот флаг показывает, что команда CPUID поддерживается.

В 64-битном режиме используется регистр RFLAGS. Старшие 32 разряда которого зарезервированы, а младшие – аналогичны EFLAFS.

Кроме представленных на рисунке 24 регистров, системному программисту доступны и другие ресурсы процессора:

· Порты ввода/вывода

· Управляющие регистры: 5 штук (CR0÷CR4), определяют режимы работы процессора и характеристики текущей задачи. Описание и назначение этих регистров приводится в документации фирмы Intel [2].

· Регистры управления памятью: регистры GDTR, IDTR, LDTR и регистр задачи (task register) определяют местоположение структур данных, используемых в управлении памятью в защищенном режиме. Описание и назначение этих регистров приводится в документации фирмы Intel.

· Отладочный регистр: отладочные регистры DR0÷DR7 управляют и позволяют отлаживать выполнение операций процессором.

· Регистры диапазона типа памяти (MTRR): используются для назначения областям памяти типа кэширования (от «ни в коем случае не кэшируемая – сразу запись/чтение» до «чтение и запись из кэша по мере возможности»), зависящего от типа памяти (ROM, RAM, отображенная на ОП память устройств и т.п.) и позволяющие оптимизировать работу с памятью.

· Специфичные регистры: у процессора есть множество различных регистров, используемых для управления и отчета о производительности процессора. Виртуально, каждому из них соответствует какая то системная функция и программно они не доступны (единственное исключение – таймер).

· Регистры проверки машины

· Счетчики контроля производительности


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: