FCMOVcc

Coma flotante movimiento condicional

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
DA C0+iFCMOVB ST(0), ST(i)ValidoValidoMuévete si abajo (CF=1).
DA C8+iFCMOVE ST(0), ST(i)ValidoValidoMover si es igual (ZF=1).
DA D0+iFCMOVBE ST(0), ST(i)ValidoValidoMover si es inferior o igual (CF=1 o ZF=1).
DA D8+iFCMOVU ST(0), ST(i)ValidoValidoMuévete si no está ordenado (PF=1).
DB C0+iFCMOVNB ST(0), ST(i)ValidoValidoMuévete si no debajo (CF=0).
DB C8+iFCMOVNE ST(0), ST(i)ValidoValidoMover si no es igual (ZF=0).
DB D0+iFCMOVNBE ST(0), ST(i)ValidoValidoMover si no es inferior o igual (CF=0 y ZF=0).
DB D8+iFCMOVNU ST(0), ST(i)ValidoValidoMuévete si no está sin orden (PF=0).

Coste medido

Cargando las mediciones de arch-data...

Descripción

Pruebas las banderas de estado en el registro EFLAGS y mueve el operando de origen (segundo operando) al operando de destino (primer operando) si la condición de prueba dada es verdadera. La condición para cada os mnemónicos dados en la columna Descripción arriba y en el Capítulo 8 en el Intel(R) 64 e IA-32 Arquitecturas Software Manual del desarrollador, Volumen 1. El operando de origen está siempre en el registro ST(i) y el operando de destino es siempre ST(0).

Las instrucciones FCMOVcc son útiles para optimizar pequeñas construcciones IF. También ayudan a eliminar la sobrecarga de ramificación para las operaciones de IF y la posibilidad de subdivisiones erróneas por el procesador.

Un procesador no puede apoyar las instrucciones del FCMOVcc. El software puede comprobar si las instrucciones FCMOVcc son compatibles con la información de características del procesador con la instrucción CPUID (ver "COMISS--Comparar escalar Ordenado valores en coma flotante de precisión simple y Set EFLAGS" en este capítulo). Si se fijan los bits CMOV y FPU, se admiten las instrucciones FCMOVcc.

La operación de esta instrucción es la misma en modos no-64-bit y modo 64-bit.

Compatibilidad de arquitectura IA-32

Las instrucciones FCMOVcc fueron introducidas a la Arquitectura IA-32 en los procesadores familiares P6 y no están disponibles en procesadores IA-32 anteriores.

Operación

IF condition TRUE
    THEN ST(0) := ST(i);

FI;

FPU Flags Affected

C1                        Set to 0 if stack underflow occurred.

C0, C2, C3                Undefined.

Excepciones coma flotante

#IS                       Stack underflow occurred.

Integer Flags Afectó a Ninguno.

Excepciones

Modo protegido
#NMCR0.EM[bit 2] o CR0.TS[bit 3] = 1.
#UDSi se utiliza el prefijo LOCK.
Modo real
Las mismas excepciones que en modo protegido.
Modo virtual-8086
Las mismas excepciones que en modo protegido.
Modo de compatibilidad
Las mismas excepciones que en modo protegido.
Modo de 64 bits
Las mismas excepciones que en modo protegido.

Fuentes