logo

Система команд 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

FXRSTOR

Восстановить состояние FPU/MMX/SIMD

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

OF

DF

IF

TF

SF

ZF

AF

PF

CF

                 

 

Код

Команда

Описание

Проц.

Пример

0F AE /1

FXRSTOR m512byte

Загрузить контекст FPU/MMX и SIMD из m512byte

Pentium II

fxrstor [edi]

Операция:

Контекст FPU/MMX и SIMD = m512byte;

Описание:

Команда FXRSTOR осуществляет загрузку из области памяти, задаваемой m512byte, содержимого всех регистров FPU/MMX и SIMD. Эти данные должны предварительно помещаться в память командой FXSAVE. Пара команд FXSAVE/FXRSTOR используется для быстрого переключения контекста FPU/MMX/SIMD при переключении задач. На рис. 6.4. представлен формат структуры данных, сохранаяемой командой FXSAVE и загружаемой командой FXRSTOR.

 

 

Команда FXRSTOR, в отличие от команд ESC, не вызывает генерации особой ситуации #MF при наличии отложенных исключений FPU. При этом флаги исключений корректно загружаются в регистр SW сопроцессора, далее может быть выполнена команда FWAIT для проверки наличия необработанных исключений.

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

Для процессоров, где отсутствует поддержка расширений потоковой обработки SIMD, а также когда CR4.OSFXSR = 0 процессор не производит загрузки регистров XMM0, … XMM7 и MXCSR по команде FXRSTOR, а соответствующие им поля в памяти считаются зарезервированными.

Использование префиксов повторения (F2h, F3h) и префикса размера операнда с командой FXRSTOR является зарезервированной недокументированной функцией. Различные модели процессоров по разному реагируют на эту ситуацию. Не рекомендуется применять в программах комбинацию команды FXRSTOR и названных префиксов, т.к. в дальнейших моделях процессоров эта функция может быть изменена или исключена. Префикс размера адреса может свободно использоваться, он будет оказывать влияние на формирование адреса области данных, но не на формат самой области, который во всех режимах остается неизменным.

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

#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор, а также при попытке загрузки 1 в зарезервированные биты регистра MXCSR.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#NM, если CR0.EM = 1 или CR0.TS = 1.
#PF(Код ошибки), страничная ошибка.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3 (в некоторых случаях при невыровненной ссылке в память может генерироваться особая ситуация #GP).
#UD при использовании перед командой префикса LOCK.

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

#GP, если любая часть операнда находится вне пространства эффективных адресов, а также при попытке загрузки 1 в зарезервированные биты регистра MXCSR.
#NM, если CR0.EM = 1 или CR0.TS = 1.
#UD при использовании перед командой префикса LOCK.

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

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки), страничная ошибка.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3 (в некоторых случаях при невыровненной ссылке в память может генерироваться особая ситуация #GP).





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

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

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