Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
FLDENV
Влияние команды на флаги и форматы команды:
* |
* |
* |
* |
* |
* |
* |
D9 /4 |
FLDENV m14/28byte |
Загрузить среду FPU из m14byte или m28byte |
8087 |
fldenv [bp+6] |
Описание:
Команда FLDENV загружает новую среду FPU из памяти. Данные в памяти обычно помещаются туда предшествующей командой FSTENV или FNSTENV.
Среда FPU состоит из управляющего слова FPU (CW), слова состояния (SW), слова тэгов (TW) и указателей ошибки для данных и для команды (FDP, FIP).
Формат и расположение загружаемых значений в памяти зависят, от атрибута размера операнда команды и от текущего режима работы процессора (см. рис. 1.15., … 1.18.). Команда FLDENV должна выполняться в том же режиме работы, что и соответствующая предваряющая ее команда FSTENV или FNSTENV.
Если при загрузке новой среды в регистр SW помещается значение с установленными флагами исключений, а новое значение в регистре CW не маскирует соответствующие исключения, то в результате загрузки возникнут отложенные исключения, которые инициируют вызов обработчика исключений на следующей команде FPU/MMX/3DNow! (но только в случае исключений, обработка которых откладывается до следующей операции).
Команда FLDENV не оказывает влияния ни на какие SIMD-регистры.
Операция:
FPUControlWord = SRC(FPUControlWord);
FPUStatusWord = SRC(FPUStatusWord);
FPUTagWord = SRC(FPUTagWord);
FPUDataPointer = SRC(FPUDataPointer);
FPUInstructionPointer = SRC(FPUInstructionPointer);
FPULastInstructionOpcode = SRC(FPULastInstructionOpcode);
Особые ситуации защищенного режима:
#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) при невыровненной ссылке в память.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru