FXCH

Índices de Registro de Cambios

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
D9 C8+iFXCH ST(i)ValidoValidoIntercambiar el contenido de ST(0) y ST(i).
D9 C9FXCHValidoValidoIntercambiar el contenido de ST(0) y ST(1).

Coste medido

Cargando las mediciones de arch-data...

Descripción

Intercambia el contenido de los registros ST(0) y ST(i). Si no se especifica operando de origen, se intercambian los contenidos de ST(0) y ST(1).

Esta instrucción proporciona un medio simple de mover valores en la pila de registro FPU a la parte superior de la pila [ST(0)], para que puedan ser operados por las instrucciones coma flotante que sólo pueden operar en valores en ST(0). Por ejemplo, la siguiente secuencia de instrucciones toma la raíz cuadrada del tercer registro desde la parte superior del registro de la pila:

FXCH ST(3); FSQRT; FXCH ST(3);

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

Operación

IF (Number-of-operands) is 1
    THEN
          temp := ST(0);
          ST(0) := SRC;
          SRC := temp;
    ELSE
          temp := ST(0);
          ST(0) := ST(1);
          ST(1) := temp;

FI;

FPU Flags Affected

C1                  Set to 0.

C0, C2, C3          Undefined.

Excepciones coma flotante

#IS                 Stack underflow occurred.

Excepciones

Modo protegido
#NMCR0.EM[bit 2] o CR0.TS[bit 3] = 1.
#MFSi hay una excepción x87 FPU pendiente.
#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