FPREM

Restante parcial

estableVMJITAOTinstruccion

Codificaciones

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

Coste medido

Cargando las mediciones de arch-data...

Descripción

Cubre el resto 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 por truncating la coma flotante número quotient de [ST(0) / ST(1)] hacia cero. El signo del resto es el mismo que el signo del dividendo. La magnitud del resto es menor que la 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 inexacto-result 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.

Resultados FPREM

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
NanNanNanNanNanNanNanNan

Operación

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

IF D < 64
    THEN
          Q := Integer(TruncateTowardZero(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 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