FPREM1

Restante parcial

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
D9 F5FPREM1ValidoValidoSustitúyase ST(0) por el resto IEEE obtenido de la división ST(0) por ST(1).

Coste medido

Cargando las mediciones de arch-data...

Descripción

Computa el resto IEEE obtenido de dividir el valor en el registro ST(0) por el valor en el registro ST(1) (el divisor o módulo) y almacena el resultado en ST(0). El resto representa el siguiente valor:

Remainder := ST(0) - (Q  ST(1))

Aquí, Q es un valor entero que se obtiene redondeando el número la coma flotante de [ST(0) / ST(1)] hacia el valor entero más cercano. La magnitud del resto es inferior o igual a la mitad de la magnitud del módulo, a menos que se computase un resto parcial (como se describe a continuación).

Esta instrucción produce un resultado exacto; la excepción de precisión (inexacta) no ocurre y el control de redondeo no tiene efecto. En el cuadro siguiente se muestran los resultados obtenidos al calcular el resto de las clases de números, asumiendo que el flujo no se produce.

FPREM1 Results

ST(0)-FST(0)+/-F or -0**+/- F or - 0ST(0)Nan
-0-0-0 **-0-0Nan
+0+0+0 **+0+0Nan
+FST(0)+/- F or + 0**+/- F or + 0ST(0)Nan
+* ***Nan

Operación

D := exponent(ST(0))  exponent(ST(1));

IF D < 64
    THEN
          Q := Integer(RoundTowardNearestInteger(ST(0) / ST(1)));
          ST(0) := ST(0)  (ST(1)  Q);
          C2 := 0;
          C0, C3, C1 := LeastSignificantBits(Q); (* Q2, Q1, Q0 *)
    ELSE
          C2 := 1;
          N := An implementation-dependent number between 32 and 63;
          QQ := Integer(TruncateTowardZero((ST(0) / ST(1)) / 2(D - N)));
          ST(0) := ST(0)  (ST(1)  QQ  2(D - N));

FI;

FPU Flags Affected

C0                  Set to bit 2 (Q2) of the quotient.

C1                  Set to 0 if stack underflow occurred; otherwise, set to least significant bit of quotient (Q0).

C2                  Set to 0 if reduction complete; set to 1 if incomplete.

C3                  Set to bit 1 (Q1) of the quotient.

Excepciones coma flotante

#IS                 Stack underflow occurred.
#IA                 Source operand is an SNaN value, modulus (divisor) is 0, dividend is , or unsupported

format.

#D                  Source operand is a denormal value.
#U                  Result is too small for destination format.

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