- •3.3. Организация памяти
- •3.3.1 Модели памяти ia-32
- •3.3.2 Пейджинг и виртуальная память
- •3.3.3 Организация памяти в 64-битном режиме
- •3.3.4. Режимы работы против модели памяти
- •3.3.6 Расширенная физическая адресация в защищенном режиме
- •3.3.7 Расчет адресов в 64-битном режиме
- •3.3.7.1 Каноническая адресация
- •3.4 Основные регистры выполнения программы
- •3.4.1 Регистры общего назначения
- •3.4.1.1 Регистры общего назначения в 64-битном режиме
- •3.4.2 Регистры сегментов
- •3.4.2.1 Регистры сегментов в 64-битном режиме
- •3.4.3.1 Флаги состояния
- •3.4.3.2 Флаг df
- •3.4.3.3 Системные флаги и поле iopl
- •3.7.2 Операнды регистров
- •3.7.5. Определение смещения
- •3.7.5.1 Определение смещения в 64-битном режиме
- •3.7.6 Режимы адресации ассемблера и компилятора
- •3.7.7 Адресация портов ввода / вывода
3.4.3.3 Системные флаги и поле iopl
Системные флаги и поле IOPL в операционной системе регистрации регистров EFLAGS или исполнительных операциях. Они не должны модифицироваться прикладными программами. Функции системных флагов следующие:
TF (бит 8) Флаг ловушки - установить для включения одношагового режима для отладки; чтобы отключить одношаговый режим.
IF (бит 9) Флаг включения прерывания - управляет ответом процессора на маскируемые запросы прерываний. Установите для ответа на маскируемые прерывания; очищается для блокировки маскируемых прерываний.
IOPL (бит 12 и 13) Поле уровня привилегий ввода-вывода - указывает уровень привилегий ввода-вывода для текущей программы или задачи. Текущий уровень привилегий (CPL) текущей выполняемой программы или задачи должен быть меньше или равен уровню привилегий ввода-вывода для доступа к адресному пространству ввода-вывода. Инструкции POPF и IRET могут изменять это поле только при работе с CPL 0.
NT (бит 14) Вложенный флаг задачи - управляет цепочкой прерываний и вызываемых задач. Установить, когда текущая задача связана с ранее выполненной задачей; очищается, когда текущая задача не связана с другой задачей.
RF (бит 16) Возобновить флаг - управляет ответом процессора на исключения отладки. VM (бит 17) Флаг режима Virtual-8086 - включить режим виртуального 8086; чтобы вернуться в защищенный режим без семантики режима виртуального 8086.
AC (бит 18). Флаг проверки выравнивания (или контроля доступа). Если бит AM установлен в регистре CR0, проверка выравнивания доступа к данным в режиме пользователя разрешена тогда и только тогда, когда этот флаг равен 1. Если бит SMAP установлен в регистре CR4 допускаются явные режимы доступа к данным на страницах пользовательского режима, если и только если этот бит равен 1. См. раздел 4.6 «Права доступа» в Руководстве разработчика программного обеспечения Intel® 64 и IA-32, Том 3А.
VIF (бит 19). Виртуальный флаг прерывания - виртуальное изображение флага IF. Используется вместе с флагом VIP. (Чтобы использовать этот флаг и флаг VIP, расширения виртуального режима активируются установкой флага VME в управляющий регистр CR4.)
VIP (бит 20) Флаг ожидающего ожидания виртуального прерывания - установить, чтобы указать, что прерывание ожидает; очистить, когда прерывание не ожидается. (Программное обеспечение устанавливает и очищает этот флаг, процессор читает его только.) Используется вместе с флагом VIF.
ID (бит 21). Идентификационный флаг. Способность программы устанавливать или очищать этот флаг означает поддержку инструкции CPUID.
3.7.2 Операнды регистров
Исходными и целевыми операндами могут быть любые из следующих регистров, в зависимости от выполняемой команды:
• 32-разрядные регистры общего назначения (EAX, EBX, ECX, EDX, ESI, EDI, ESP или EBP)
• 16-разрядные регистры общего назначения (AX, BX, CX, DX, SI, DI, SP или BP)
• 8-битные регистры общего назначения (AH, BH, CH, DH, AL, BL, CL или DL)
• регистры сегментов (CS, DS, SS, ES, FS и GS)
• Регистр EFLAGS
• регистры FQU x87 (ST0 - ST7, слово состояния, управляющее слово, слово тега, указатель операнда данных и указатель команд)
• Регистры MMX (от MM0 до MM7)
• Регистры XMM (от XMM0 до XMM7) и регистр MXCSR
• регистры управления (CR0, CR2, CR3 и CR4) и регистры указателей системной таблицы (GDTR, LDTR, IDTR и регистр задач)
• регистры отладки (DR0, DR1, DR2, DR3, DR6 и DR7)
• Регистры MSR
В некоторых инструкциях (например, в инструкциях DIV и MUL) используются операнды quadword, содержащиеся в паре 32-разрядных регистров. Регистровые пары представлены двоеточием, разделяющим их. Например, в паре регистров EDX: EAX, EDX содержит биты высокого порядка, а EAX содержит младшие биты четверного операнда.
Для загрузки и хранения содержимого регистра EFLAGS предусмотрено несколько инструкций (например, инструкции PUSHFD и POPFD) или для установки или очистки отдельных флагов в этом регистре. Другие инструкции (например, инструкции Jcc) используют состояние флагов состояния в регистре EFLAGS в качестве кодов условий для ветвления или других операций принятия решений.
Процессор содержит набор системных регистров, которые используются для управления памятью, обработки прерываний и исключений, управления задачами, управления процессорами и отладочных действий. Некоторые из этих системных регистров доступны с помощью прикладной программы, операционной системы или исполнительной власти с помощью набора системных инструкций. При обращении к системному регистру с системной инструкцией регистр обычно является подразумеваемым операндом команды.
