FLDENV
Carga x87 FPU Medio ambiente
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
D9 /4 | FLDENV m14/28byte | Valido | Valido | Carga FPU ambiente de m14byte o m28byte. |
Coste medido
Cargando las mediciones de arch-data...
Descripción
Carga el entorno operativo x87 FPU completo de memoria en los registros FPU. El operando de origen especifica el primer byte de los datos del entorno operativo en memoria. Estos datos se escriben típicamente a la ubicación de memoria especificada por una instrucción FSTENV o FNSTENV.
El entorno operativo FPU consta de la palabra de control FPU, palabra de estado, palabra de etiqueta, puntero de instruccion, puntero de datos, y último código de operación. Figuras 8-9 a 8-12 en Intel(R) 64 e IA-32 Architectures Software Developer's Manual, Volumen 1, mostrar el diseño en memoria del entorno cargado, dependiendo del modo operativo del procesador (protegido o real) y el atributo operando-size actual (16-bit o 32-bit). En modo virtual-8086, se utilizan los diseños de modo real.
La instrucción FLDENV debe ejecutarse en el mismo modo operativo que la instrucción FSTENV/FNSTENV correspondiente.
Si una o más banderas de excepción desenmascaradas se establecen en la nueva palabra de estado FPU, la excepción de una coma flotante se generará en la ejecución de la siguiente instrucción coma flotante (excepto las instrucciones de coma flotante no espera, ver la sección titulada "Manejo de Excepciones Software" en el capítulo 8 del Intel(R) 64 e IA-32 Architectures Software Manual de desarrollador, Volumen 1) Para evitar generar excepciones al cargar un nuevo entorno, despejar todas las banderas de excepción en la palabra de estado FPU que se está cargando.
Si se produce una página o un límite de culpa durante la ejecución de esta instrucción, el estado de los registros x87 FPU vistos por el manipulador de fallas puede ser diferente al estado cargado de la memoria. En tales situaciones, el controlador de fallas debe ignorar el estado de los registros x87 FPU, descriptor la falla, y el retorno. La instrucción FLDENV completará la carga de los registros x87 FPU sin inconsistencia de contexto resultante.
La operación de esta instrucción es la misma en modos no-64-bit y modo 64-bit.
Operación
FPUControlWord := SRC[FPUControlWord];
FPUStatusWord := SRC[FPUStatusWord];
FPUTagWord := SRC[FPUTagWord];
FPUDataPointer := SRC[FPUDataPointer];
FPUInstructionPointer := SRC[FPUInstructionPointer];
FPULastInstructionOpcode := SRC[FPULastInstructionOpcode];
FPU Flags Affected
The C0, C1, C2, C3 flags are loaded.Excepciones coma flotante
Ninguna; sin embargo, si una excepción desenmascarada está cargada en la palabra de estado, se genera en la ejecución de la siguiente instrucción coma flotante "esperando".
Excepciones
Modo protegido
#GP(0) | Si un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. Si el registro DS, ES, FS o GS se utiliza para acceder a la memoria y contiene un NULL selector de segmento. |
#SS(0) | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. |
#NM | CR0.EM[bit 2] o CR0.TS[bit 3] = 1. #PF(fault-code) Si un fallo de pagina ocurre. |
#AC(0) | Si la comprobación de alineación está habilitada y se hace una referencia de memoria no alineada mientras que el nivel de privilegio actual es 3. |
#UD | Si se utiliza el prefijo LOCK. |
Modo real
#GP | Si un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. |
#SS | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. |
#NM | CR0.EM[bit 2] o CR0.TS[bit 3] = 1. |
#UD | Si se utiliza el prefijo LOCK. |
Modo virtual-8086
#GP(0) | Si un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. |
#SS(0) | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. |
#NM | CR0.EM[bit 2] o CR0.TS[bit 3] = 1. #PF(fault-code) Si un fallo de pagina ocurre. |
#AC(0) | Si la comprobación de alineación está habilitada y se hace una referencia de memoria no alineada. |
#UD | Si se utiliza el prefijo LOCK. |
Modo de compatibilidad
| Las mismas excepciones que en modo protegido. |
Modo de 64 bits
#SS(0) | Si una dirección de memoria que hace referencia al segmento SS está en forma no canónica. |
#GP(0) | Si la dirección de memoria está en forma no canónica. |
#NM | CR0.EM[bit 2] o CR0.TS[bit 3] = 1. |
#MF | Si hay una excepción x87 FPU pendiente. #PF(fault-code) Si un fallo de pagina ocurre. |
#AC(0) | Si la comprobación de alineación está habilitada y se hace una referencia de memoria no alineada mientras que el nivel de privilegio actual es 3. |
#UD | Si se utiliza el prefijo LOCK. |