Базовая регистровая архитектура процессоров семейства Х86, страница 4

Флаги управления в регистре флагов воздействуют на те или иные аспекты работы процессора.

IOPL (Input/OutputPrivilegeLevel) – уровень привилегий ввода/вывода. Это двухбитовое поле является составной частью системы защиты процессора и действует только в P – режиме. Оно показывает тот минимальный уровень привилегий выполняющейся задачи, на котором разрешается производство операций ввода/вывода. Таким образом, эти два бита используются для управления доступом к адресному пространству ввода/вывода. Запись информации в эти два бита может быть произведена командами программ, расположенными только на уровне 0 колец защиты.

TF (TrapFlagили TraceFlag) – флаг пошаговой работы (трассировки). Когда этот шаг установлен в состояние 0, процессор работает обычным образом, а при TF =1 он переводится в режим пошаговой (покомандной) работы, т.е. после выполнения каждой команды генерируется внутреннее прерывание.  При этом управление передается отладчику, который обычно выводит на экран дисплея состояние процессора в данный момент времени, и останавливает работу процессора в ожидании действий пользователя. Этот флаг является одним из средств, предназначенных для отладки программ.

IF (InterruptFlag) – флаг управления прерываниями. Когда флаг IF установлен в состояние 1, процессор распознает и обрабатывает внешние маскируемые аппаратные прерывания, запрос на которые поступает от контроллера прерываний по входу INTR. Таким образом, установка флага IF в состояние 1 разрешает процессору реагировать на внешние прерывания. Если же флаг IF=0, внешние прерывания запрещены, и процессор игнорирует сигналы прерывания по входу INTR. Однако на внешние прерывания по входу NMI установка флага IF влияния не оказывает, так же как и на прерывания внутренние. Отметим, что на выполнение команд, задающих состояние флага IF, влияет механизм защиты процессора.

DF (DirectionFlag) – флаг направления обработки цепочек. После  операции над одним элементом цепочки производится автоматический инкремент (при DF=0) или декремент (при DF=1) содержимого индексных регистров ESI/SI и EDI/DI, в которых формируются адресные смещения в соответствующих сегментах. Таким образом, при DF=0 цепочки обрабатываются от младших адресов к старшим, а при DF=1 обработка цепочек осуществляется от старших адресов к младшим. Величина инкремента/декремента, составляет 1,2 или 4 в зависимости от размера элементов цепочек (байт, слово или двойное слово). Для задания нужного состояния флага DF в системе команд процессора предусмотрены специальные инструкции.

RF (ResumeFlag) – флаг возобновления. Этот флаг является составной частью новых средств отладки и действует совместно с регистрами отладки. Используется при отладке программ с помощью контрольных точек. Значение флага проверяется между командами перед прерыванием. Если этот флаг установлен в 1, то любая ошибка отладки перед выполнением следующей команды игнорируется. Флаг RF автоматически сбрасывается при успешном завершении каждой команды, сигнализируя об отсутствии ошибки. Исключения составляют команды IRET, POPF, JMP, CALL и INT, вызывающие переключения задач. Перечисленные команды устанавливают значение флага RF в соответствии с содержимым EFLAGS, вызываемым из памяти.

VM (VirtualMode) – флаг виртуального режима (V – режима) процессора. Когда VM = 0, процессор может работать в R – или P – режиме, а при VM = 1 процессор превращается в многозадачный высокопроизводительный процессор 8086. Каждой такой задаче выделяется 1 Мбайт адресного пространства. Флаг VM можно установить в состояние 1 только в защищенном режиме работы, т.е. в P – режиме: командой IRET на нулевом уровне привилегий или переключением задач на любом уровне привилегий. Таким образом, установка флага VM  в состояние 1 переводит процессор в V – режим, который эмулирует программную среду процессора 8086.

AC (AlignmentCheсk) – флаг контроля выравнивания. Установка в 1 флага AC (а также бита AM в регистре управления CR0) разрешает контроль выравнивания при обращении к памяти. Особый случай контроля выравнивания возникает при обращении к невыравненному операнду, например к слову с нечетным байтовым адресом или к двойному слову, адрес которого не кратен четырем. Особые случаи выравнивания генерируются только в режиме пользователя (уровень привилегий 3). Обращение к памяти, которые по умолчанию относятся к уровню привилегий 0, например, загрузка дескриптора сегмента, не формируют этого особого случая при обращении к памяти даже в режиме пользователя. Наличие контроля выравнивания удобно при обмене данными с другими процессорами, например с процессором i860, который требует выравнивания всех данных.

ID (Identificationопознание, выяснение) – флаг идентификации. Этот флаг предназначен для проверки, поддерживается ли процессором команда CPUID или нет. Если в программе можно установить и сбросить этот флаг, значит, команда CPUID данным процессом поддерживается. Команда же CPUID предоставляет программному обеспечению информацию о продавце, семействе, модели и поколении процессора, на котором она выполнена. Входное значение, загружаемое в регистр EAX, указывает какую информацию необходимо вернуть командой CPUID. После выполнения команды CPUID со значением 0 в EAX, регистр EAX будет содержать максимальное значение, понимаемое командой CPUID. Для процессоров Pentium значение в EAX будет равно 1. В выходное значение этой команды будет также включена строка идентификации продавца, содержащаяся в регистрах EBX, EDX, и ECX. Регистр EBX содержит первые четыре символа данной строки, регистр EDX содержит следующие четыре символа и, наконец, регистр ECX содержит последние четыре символа строки. Для процессоров Intel  строка идентификации продавца имеет следующий вид: «GenuineIntel». После выполнения команды CPUID со значением 1 в EAX, EAX[3:0] содержит номер разработки микропроцессора, EAX[7:4] содержит номер модели, (первая модель будет указана в этих битах как 0001B), и EAX[11:8] содержит семейство (5 для линии процессоров Pentium). Регистры EAX [31:12], EBX и ECX – зарезервированы. В EDX указаны еще несколько характеристик (какие свойства данная модель поддерживает).