logo

Главная Система команд x86 Система команд FPU FNSAVE

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

FNSAVE

Сохранить и сбросить контекст FPU

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

IS

IA

D

Z

O

U

P

 

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

9B DD /6

FSAVE m94

Проверить на наличие отложенных незамаскированных исключений и сохранить контекст FPU в m94byte или m108byte, затем инициализировать FPU

8087

fsave  [ecx]

DD /6

FNSAVE m94

Сохранить контекст FPU в m94byte или m108byte, затем инициализировать FPU

8087

fnsave mem

Описание:

Команда FSAVE/FNSAVE записывает текущий контекст FPU (среду и регистровый стек) в память, а затем инициализирует FPU аналогично тому, как это происходит при выполнении команд FINIT/FNINIT.

Команда FSAVE, в отличие от FNSAVE, проверяет на наличие отложенных необработанных исключений.

Среда FPU состоит из управляющего слова FPU (CW), слова состояния (SW), слова тэгов (TW) и указателей ошибки для данных и для команды (FDP, FIP).

Формат и расположение сохраняемых в памяти значений зависят, от атрибута размера операнда команды и от текущего режима работы процессора (см. рис. 1.15., … 1.18.). Регистры стека FPU, начиная с ST(0) и заканчивая ST(7), занимают 80 байт и размещаются сразу же за образом среды.

FSAVE и FNSAVE не сохраняют контекст FPU, пока не будут полностью выполнены все предыдущие операции. Таким образом, сохраненный контекст отражает состояние FPU после любой предварительно декодированной и выполненной команды.

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

Команда FSAVE/FNSAVE не оказывает влияния ни на какие SIMD-регистры и не сохраняет их состояния.

Операция:

DEST(FPUControlWord) = FPUControlWord;

DEST(FPUStatusWord) = FPUStatusWord;

DEST(FPUTagWord) = FPUTagWord;

DEST(FPUDataPointer) = FPUDataPointer;

DEST(FPUInstructionPointer) = FPUInstructionPointer;

DEST(FPULastInstructionOpcode) = FPULastInstructionOpcode;

DEST(ST(0)) = ST(0);

DEST(ST(1)) = ST(1);

DEST(ST(2)) = ST(2);

DEST(ST(3)) = ST(3);

DEST(ST(4)) = ST(4);

DEST(ST(5)) = ST(5);

DEST(ST(6)) = ST(6);

DEST(ST(7)) = ST(7);

(* Инициализация FPU *)

FPUControlWord = 037FH;

FPUStatusWord = 0;

FPUTagWord = FFFFH;

FPUDataPointer = 0;

FPUInstructionPointer = 0;

FPULastInstructionOpcode = 0;

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

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

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

#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.
#NM, если CR0.EM = 1 или CR0.TS = 1.

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

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

Замечание:

В процессорах 8087, Intel287, Intel387, Intel486, если программа читает из памяти сохраненный контекст сразу же после сохранения его командой FSAVE/FNSAVE, то она должна выполнить команду FWAIT, чтобы наверняка завершить сохранение.


Входит в группу команд: Система команд FPU




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

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

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