logo

Воскресенье 11 Декабрь 2016 (GMT+0300)

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

FXSAVE

Сохранить состояние FPU/MMX/SIMD

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

OF

DF

IF

TF

SF

ZF

AF

PF

CF

                 

 

Код

Команда

Описание

Проц.

Пример

0F AE /0

FXSAVE m512byte

Сохранить контекст FPU/MMX и SIMD в m512byte

Pentium II

fxsave [ebx]

Операция:

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

Описание:

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

 

 

Команда FXSAVE сограняет содержимое регистра тэгов TW не так, как это делает команда FSAVE. В FXSAVE все тэги располагаются по порядку их соответствия физическим регистрам FPU, а не регистрам стека FPU.

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

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

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

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

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

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

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

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

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





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

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

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