Регистры микропроцессоров Intel
По назначению и способу использования регистры процессоров Intel можно разбить на группы:
- регистры общего назначения
- сегментные регистры
- регистр флагов
- регистр указателя команд
- регистры управления памятью
- регистры управления процессором
- отладочные регистры
- регистры MMX
Как следует из названия, эти регистры могут использоваться для любых целей.
EAX | AX | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AH | AL | |||||||||||||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
EBX | BX | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BH | BL | |||||||||||||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ECX | CX | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CH | CL | |||||||||||||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
EDX | DX | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DH | DL | |||||||||||||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ESI | SI | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
EDI | DI | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
EBP | BP | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ESP | SP | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Хотя эти регистры и могут использоваться для различных целей, но часть из них используются при выполнении некоторых специфичных действий:
Регистр ESP используется в качестве указателя стека, и с ним работают команды PUSH, POP и т.п.
Регистр ECX используется в качестве счетчика цикла в командах LOOP.
Регистры ESI и EDI используются как индексные регистры при работе со строковыми командами.
Для каждого 32-разрядного регистра общего назначения можно обращаться к его младшей половине как к отдельному 16-разрядному регистру (AX, BX, CX, DX, SI, DI, BP, SP). Кроме того к старшим и младшим половинам регистров AX, BX, CX и DX можно обращаться как к 8-разрядным регистрам (AH, AL, BH, BL, CH, CL, DH, DL).
Все обращения к памяти происходят через один из шести сегментных регистров: CS, DS, ES, GS, FS и SS. В этих регистрах хранятся 16-разрядные селекторы сегментов. Регистры CS и SS закреплены за сегментами кода и стека соответственно. Остальные сегментные регистры могут использоваться для любых целей, однако регистры DS и ES используются командами, работающими со строками, а регистр DS по-умолчанию используется при обращении к данным.
Регистр флагов FLAGS (EFLAGS в 32-разрядном процессоре) - это специальный регистр, отображающий состояние процессора на момент выполнения команды.
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ID | VIP | VIF | AC | VM | RF | 0 | NT | IOPL | OF | DF | IF | TF | SF | ZF | 0 | AF | 0 | PF | 1 | CF |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Зарезервированы. | |
Флаг идентификации ID. Если программа смогла установить или сбросить этот флаг, то это означает, что процессор поддерживает инструкцию CPUID. | |
Флаг ожидания виртуального прерывания VIP (P5+). Этот флаг указывает процессору, что произошло аппаратное прерывание. Флаги VIF и VIP используются в многозадачных средах для того, чтобы каждая задача имела собственный виртуальный образ флага IF. | |
Флаг виртуального прерывания VIF (P5+). | |
Флаг контроля выравнивания AC (486+). Если установить этот флаг и флаг AM в регистре CR0, каждое обращение к памяти из программ, выполняющихся с CPL = 3, не выровненное на границу слова для слов и на границу двойного слова для двойных слов, будет вызывать исключение #АС. | |
Флаг режима V86 (386+). | |
Флаг возобновления RF. Когда этот флаг равен 1, отладочные исключения временно запрещены. | |
Зарезервирован. | |
Флаг вложенной задачи NT (286+). Этот флаг устанавливается в 1, если текущая задача является вложенной по отношению к какой-то другой — в обработчиках прерываний и исключений и вызванных командой call задачах. Флаг влияет на работу команды IRET. | |
Уровень привилегий ввода-вывода IOPL (286+). Уровень привилегий ввода-вывода, с которым выполняется текущая программа или задача | |
Флаг переполнения OF. Этот флаг устанавливается в 1, если результат предыдущей арифметической операции над числами со знаком выходит за допустимые для них пределы. Например, если при сложении двух положительных чисел получается число со старшим битом, равным единице (то есть отрицательное) и наоборот. | |
Флаг направления DF. Этот флаг контроллирует поведение команд обработки строк — когда он установлен в 1, строки обрабатываются в сторону уменьшения адресов, а когда DF = 0 — наоборот. | |
Флаг разрешения прерываний IF. Установка этого флага в 1 приводит к тому, что процессор перестает обрабатывать прерывания от внешних устройств. Обычно его устанавливают на короткое время для выполнения критических участков кода. | |
Флаг трассировки TF. Этот флаг был предусмотрен для работы отладчиков, не использующих защищенный режим. Установка его в 1 приводит к тому, что после выполнения каждой команды программы управление временно передается отладчику (вызывается прерывание 01h). | |
Флаг знака SF. Этот флаг всегда равен старшему биту результата. | |
Флаг нуля ZF. Устанавливается в 1, если результат предыдущей команды — ноль. | |
Зарезервирован | |
Флаг вспомогательного переноса AF. Флаг полупереноса или вспомогательного переноса. Устанавливается в 1, если в результате предыдущей операции произошел перенос (или заем) из третьего бита в четвертый. Этот флаг используется автоматически командами двоично-десятичной коррекции. | |
Зарезервирован | |
Флаг четности PF. Устанавливается в 1, если младший байт результата предыдущей команды содержит четное число бит, равных 1; устанавливается в 0, если число единичных бит нечетное. (Это не то же самое, что делимость на два. Число делится на два без остатка, если его самый младший бит равен нулю, и не делится, если он равен 1.). | |
Зарезервирован | |
Флаг переноса CF. Устанавливается в 1, если результат предыдущей операции не уместился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании), иначе устанавливается в 0. |
Регистр указателя команд IP (или EIP в 32-разрядных процессорах) - это специальный регистр процессора, указывающий на ячейку памяти, где находится следующая выполняемая команда. Значение этого регистра нельзя изменить явным образом, с помощью команд присваивания. Единственные команды, влияющие на его значение - это команды перехода (JMP, JE, JNC, ...) и команды вызова и возврата из процедур (CALL, INT, RET, ...).
Эти регистры используются для указания положения структур данных, ответственных за сегментацию в защищенном режиме.
GDTR | Linear address | Limit | ||||||||||||||||||||||||||||||||||||||||||||||
47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
GDTR (Global Descriptor Table Register): 6-байтный регистр, в котором содержатся 32-битный линейный адрес начала таблицы глобальных дескрипторов (GDT) и ее 16-битный размер (минус 1). Каждый раз, когда происходит обращение к памяти, по селектору, находящемуся в сегментном регистре, определяется дескриптор из таблицы GDT или LDT, в котором записан адрес начала сегмента и другая информация.
IDTR | Linear address | Limit | ||||||||||||||||||||||||||||||||||||||||||||||
47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
IDTR (Interrupt Descriptor Table Register): 6-байтный регистр, в котором содержатся 32-битный линейный адрес начала таблицы глобальных дескрипторов обработчиков прерываний (IDT) и ее 16-битный размер (минус 1). Каждый раз, когда происходит прерывание или исключение, процессор передает управление на обработчик, описываемый дескриптором из IDT с соответствующим номером.
LDTR | Selector | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
LDTR (Local Descriptor Table Register): 16-битный регистр, в котором содержится селектор для GDT, описывающий текущую таблицу локальных дескрипторов (LDT).
TR | Selector | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
TR (Task Register): 16-битный регистр, в котором содержится селектор для GDT, описывающий TSS текущей задачи.
Регистры управления процессором
Пять 32-битных регистров CR0 – CR4 управляют функционированием процессора и работой отдельных его внутренних блоков.
CR0 | PG | CD | NW | - | AM | - | WP | - | NE | ET | TS | EM | MP | PE | ||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CR0 (Control Register 0): 32-битный регистр, содержащий флаги управления процессором:
Флаг страничной адресации PG (386+). Если бит установлен, то включен режим страничной адресации. | |
Флаг отключения кэширования CD (486+). Если флаг установлен, то отключается запись в кэш 1 уровня. Считывание из кэша все равно будет происходить. | |
Флаг сквозного кэширования NW (486+). Если флаг установлен, то отключается сквозная запись во внутренний кэш, то есть данные, записываемые в кэш, не появляются на внешних выводах процессора. | |
Флаг контроля выравнивания AM (486+). Если флаг установлен, то флагу АС разрешается включать режим выравнивания данных. | |
Флаг защиты от записи WP (486+). Если флаг установлен, то запрещается запись в страницы, помеченные как только для чтения на всех уровнях привилегий | |
Флаг ошибки сопроцессора NE (486+). Если флаг установлен, то процессор при возникновении ошибки в операциях с плавающей точкой генерирует соответствующее исключение. Если флаг сброшен, то процессор генерирует прерывание, которое должно обрабатываться внешним контроллером прерываний. | |
Флаг типа сопроцессора ET (386, 486). Если флаг сброшен, то это означает, что используется внешний сопроцессор. Если флаг установлен, то сопроцессор - встроенный. На всех новых процессорах этот флаг равен 1. | |
Флаг переключенния задачи TS (286+). Процессор устанавливает этот флаг после переключения задачи. Если после этого выполнить любую команду сопроцессора, то процессор сгенерирует исключение. | |
Флаг эмуляции сопроцессора EM (286+). Если флаг установлен, то каждая команда сопроцессора будет вызывать исключение. | |
Флаг наличия сопроцессора MP (286+). Этот флаг влияет на выполнение команд WAIT и FWAIT. Должен быть установлен для совместимости с программами, написанными для 80286 и 80386 и использующими эту команду. | |
Флаг защищенного режима PE (286+). Если флаг установлен, то процессор переключается в защищенный режим работы. |
CR1 | - | |||||||||||||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CR1 (Control Register 1): Зарезервирован.
CR2 | Page-Fault Linear Address | |||||||||||||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CR2 (Control Register 2): 32-битный регистр, содержащий линейный адрес, вызвавший исключение "ошибка страницы". Код ошибки, запоминаемый при возникновении исключения сохраняется в стеке обработчика страничного нарушения.
CR3 | Page-Directory Base | - | PCD | PWT | - | |||||||||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CR3 (Control Register 3): 32-битный регистр, содержащий физический адрес корневого каталога страниц памяти (биты 31-11, если флаг PAE в регистре CR4 сброшен; биты 31-5, если флаг PAE в регистре CR4 установлен), а также биты по управлению кэшированием страниц памяти:
бит 4: | Флаг запрещения кэширования страниц PCD (486+). Если бит установлен, то текущая страница не будет загружена в кэш. |
бит 3: | Флаг сквозного кэширования страниц PWT (486+). Этот флаг управляет методом записи страниц во внешний кэш. |
CR4 | - | FPE | FSR | PCE | PGE | MCE | PAE | PSE | DE | TSD | PVI | VME | ||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
CR4 (Control Register 4): 32-битный регистр, управляющий использованием архитектурных расширений процессоров Pentium и более новых. Наличие этих расширений необходимо проверять при помощи команды CPUID:
Флаг поддержки операционной системой исключений XMM (PIII+). Если бит установлен, то разрешается генерация исключения #19 (ошибка SIMD). Если бит сброшен, будет генерироваться исключение #6 (недействительный код операции). | |
Флаг поддержки команд FXSAVE/FXRSTOR (PII+). Этот флаг разрешает командам FXSAVE и FXRESTOR, сохранять и восстанавливать контекст XMM. | |
Флаг разрешения команды RDPMC (P6+). Если этот флаг установлен, то выполнение команды RDPMC разрешено на всех уровнях привилегий. Если этот флаг сброшен, то выполнение команды RDPMC разрешено только на нулевом уровне привилегий. | |
Флаг разрешения глобальности PGE (P6+). Если этот флаг установлен, то для элементов таблиц страниц допускается использование бита 8 (атрибут глобальности страницы). | |
Флаг разрешения машинного контроля MCE (P5+). Если флаг установлен, то разрешается генерирование исключения #19, возникающего, когда блок внутреннего контроля операций обнаруживает ошибку. | |
Флаг расширения физического адреса PAE (P6+). Если флаг установлен, то включается режим 36-битного физического адресного пространства. | |
Флаг расширения размера страниц PSE (P5+). Если флаг установлен, то включается режим адресации с 4-мегабайтными страницами памяти. | |
Флаг расширенной отладки DE (P5+). Позволяет устанавливать отладочные точки останова на обращение к портам ввода-вывода. Если флаг установлен, то любое обращение к регистрам DR4 и DR5 вызовет исключение #06 (недопустимый код операции). Если бит сброшен, то обращение к регистрам DR4 и DR5 приведет к обращению к регистрам DR6 и DR7 соответственно. | |
Флаг запрещения счетчика времени RDTSC (P5+). Если флаг установлен, то выполнение команды RDTSC возможно только на нулевом уровне привилегий. Если флаг сброшен, то выполнение команды RDTSC возможно на всех уровнях привилегий. | |
Флаг поддержки VIF (P5+). Если флаг установлен, то разрешается использование флага VIF. | |
Флаг расширения виртуального режима VME (P5+). Если флаг установлен, то включается расширенная обработка прерываний и исключений в состоянии V86 |
Восемь 32-разрядных регистров DR0-DR7 расширяют возможности по отладке программ на микропроцессорах Intel, начиная с 386 модели. Они устанавливают точки останова по данным и позволяют устанавливать точки останова по командам без модификации кода программ.
Линейный адрес точки останова | ||||||||||||||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Регистры DR0-DR3 содержат 32-битные линейные адреса четырех возможных точек останова по доступу к памяти.
- | ||||||||||||||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Регистры DR4-DR5 зарезервированы. На процессорах до Pentium, или если бит DE регистра CR4 равен нулю, обращение к этим регистрам приводит к обращению к DR6 и DR7 соответственно. Если бит DE = 1, происходит исключение #06 (недопустимая операция).
1 | BT | BS | BD | 0 | 1 | B3 | B2 | B1 | B0 | |||||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Регистр DR6: 32-разрядный регистр состояния отладки. Он содержит информацию о причине отладочного останова для обработчика исключения #01 (отладочное прерывание):
Зарезервированы. Должны быть 1. | |
Если флаг BT установлен, то причина прерывания - установленный отладочный бит в TSS задачи, в которую произошло переключение. | |
Если флаг BS установлен, то причина прерывания - установленный флаг трассировки TF в регистре EFLAGS. | |
Если флаг BD установлен, то причина прерывания - попытка обращения программы к отладочным регистам при установленном бите GD регистра DR7. | |
Зарезервирован. Должен быть 0. | |
Зарезервированы. Должны быть 1. | |
Если флаг B3 установлен, то причина прерывания - точка останова 3. | |
Если флаг B2 установлен, то причина прерывания - точка останова 2. | |
Если флаг B1 установлен, то причина прерывания - точка останова 1. | |
Если флаг B0 установлен, то причина прерывания - точка останова 0. |
Процессор не очищает биты причин прерывания в этом регистре, так что обработчику исключения следует делать это самостоятельно. Кроме того, одновременно может произойти прерывание из-за нескольких причин,тогда несколько бит будут установлены.
LEN3 | R/W3 | LEN2 | R/W2 | LEN1 | R/W1 | LEN0 | R/W0 | 0 | 0 | GD | 0 | 0 | 1 | GE | LE | G3 | L3 | G2 | L2 | G1 | L1 | G0 | L0 | |||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Регистр DR7: 32-разрядный регистр, задающий условие для точек останова:
Размер точки останова 3. 00 - 1 байт 01 - 2 байта 10 - зарезервировано 11 - 4 байта |
|
Тип точки останова 3. 00 - на выполнение команды 01 - на запись 10 - на порт ввода-вывода (при установленном бите DE регистра CR4) 11 - на чтение/запись |
|
Размер точки останова 2. | |
Тип точки останова 2. | |
Размер точки останова 1. | |
Тип точки останова 1. | |
Размер точки останова 0. | |
Тип точки останова 0. | |
Зарезервированы. Должны быть 0. | |
Флаг защиты отладочных регистров GD. Если флаг установлен, то включается режим, при котором обращение к любому отладочному регистру, даже из уровня привилегий 0, вызывает исключение #01. Этот бит автоматически сбрасывается внутри обработчика этого исключения. | |
Зарезервированы. Должны быть 0. | |
Зарезервирован. Должен быть 1. | |
Флаг точного обнаружения инструкции в глобальной точке останова GE. Начиная с Pentium Pro не поддерживается. Должен быть 1. | |
Флаг точного обнаружения инструкции в локальной точке останова LE. Начиная с Pentium Pro не поддерживается. Должен быть 1. | |
Флаг включения глобальной точки останова 3. Действует на все задачи и не сбрасывается при переключении задач. | |
Флаг включения локальной точки останова 3. Действует только на текущую задачу и сбрасывается при переключении на другую задачу. | |
Флаг включения глобальной точки останова 2. | |
Флаг включения локальной точки останова 2. | |
Флаг включения глобальной точки останова 1. | |
Флаг включения локальной точки останова 1. | |
Флаг включения глобальной точки останова 0. | |
Флаг включения локальной точки останова 0. |
Регистры MMX - это восемь 64-разрядных регистров MM0-MM7. Однако, физически никаких новых регистров с введением ММХ не появилось — ММ0 – ММ7 — это в точности мантиссы восьми регистров FPU, от R0 до R7. При записи числа в регистр ММХ оно появляется в битах 63 – 0 соответствующего регистра FPU, а экспонента (биты 78 – 64) и ее знаковый бит (бит 79) заполняются единицами. Запись числа в регистр FPU также приводит к изменению соответствующего регистра ММХ. Таким образом, нельзя одновременно пользоваться командами для работы с числами с плавающей запятой и командами ММХ, а если это необходимо — следует пользоваться командами FSAVE/FRSTQR,каждый раз перед переходом от использования FPU к ММХ и обратно (эти команды сохраняют состояние регистров ММХ точно так же, как и FPU).
Комментарии (0)