logo

Главная Система команд x86 Базовая система команд CPU MOV CR

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

MOV CR

Переслать в/из управляющего регистра

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

?

 

 

 

?

?

?

?

?

 

Код

Команда

Описание

Проц.

Пример

0F 22 /r

MOV CRx,r32

CRx = r32

Intel386

mov cr0,eax

0F 20 /r

MOV r32,CRx

r32 = CRx

Intel386

mov eax,cr4

Описание:

Команда MOV CR предназначена для пересылки данных между управляющими регистрами CR0, CR2, CR3, CR4 и регистрами общего назначения. С этими командами всегда используются 32-битные операнды независимо от атрибута размера операнда.

При загрузке управляющих регистров программы не должны изменять состояния зарезервированных битов и всегда устанавливать их в предварительно считанные значения.

Код операции для данной команды формируется с некоторыми особенностями. Поле reg байта ModR/M задает управляющий регистр, поле mod всегда находится в значении 11b, а поле r/m задает регистр общего назначения.

При загрузке управляющих регистров состояние процессора может быть существенно изменено, во избежание ошибок процессор автоматически выполняет ряд действий в следующих ситуациях:

  • при записи в регистр CR3 все неглобальные элементы TLB сбрасываются;
  • в процессорах Pentium Pro (и вероятно во всех процессорах микроархитектуры P6) при модификации любых флагов страничного механизма (CR0.PE, CR0.PG, CR4.PGE, CR4.PSE, CR4.PAE) все элементы TLB, включая глобальные, сбрасываются;
  • в процессорах Pentium Pro (и вероятно во всех процессорах микроархитектуры P6), если флаг CR0.PG = 1 и производится запись в регистр CR4 с установкой флага CR4.PAE = 1, то процессор сразу произведет загрузку во внутренние скрытые регистры указателей из таблицы указателей на каталог страниц;
  • в процессорах Pentium Pro (и вероятно во всех процессорах микроархитектуры P6), когда установлены флаги CR0.PG и CR4.PAE, запись в регистр CR3 приведет к перезагрузке всех указателей из таблицы указателей на каталог страниц;
  • в процессорах Pentium Pro (и вероятно во всех процессорах микроархитектуры P6), если флаг CR4.PAE = 1 и производится запись в регистр CR0 с установкой флага CR0.PG = 1, то процессор сразу произведет загрузку во внутренние скрытые регистры указателей из таблицы указателей на каталог страниц.

Указанные действия характерны только для отдельных моделей процессоров и могут быть переопределены их разработчиками в последующих модификациях.

Операция:

DEST = SRC;

Особые ситуации защищенного режима:

#GP(0), если текущий уровень привилегий не равен 0, если произведена попытка записать 1 в любой из зарезервированных битов регистра CR4, а также если произведена попытка записи некорректной комбинации управляющих битов (например, при записи в CR0 бит PG установлен, а бит PE сброшен).

Особые ситуации режима реальной адресации:

#GP, если произведена попытка записать 1 в любой из зарезервированных битов регистра CR4.

Особые ситуации режима V86:

#GP(0), при попытке выполнить команду.

Замечание:

При записи в регистр CR0 значения с PE =0, т.е. при обратном переключении в режим реальной адресации, рекомендуется предварительно изменить предел кодового сегмента на FFFFh. Это необходимо для предотвращения генерации особой ситуации #GP в реальном режиме при превышении предела сегмента CS, который был задан еще в защищенном режиме. Такая ошибка встречается во многих процессорах AMD.


Входит в группу команд: Базовая система команд CPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники