Bandera de paridad

En los procesadores de ordenador la bandera de paridad (en inglés, Parity Flag) indica si el número de bits con valor '1' es par o impar en la representación binaria del resultado de la última operación realizada. Normalmente se trata de un bit en un registro de estado del procesador.

Por ejemplo, suponga una máquina donde la bandera de paridad con valor '1' indica paridad par. Si el resultado de la última operación fue 26 (11010 en binario), la bandera de paridad sería 0 dado que el número bits con valor '1' es impar. De modo parecido, si el resultado fue 10 (1010 en binario) entonces la bandera de paridad sería 1 porque hay una cantidad par de números '1'.

Procesadores x86Editar

En procesadores x86, la bandera de paridad refleja la paridad sólo del byte menos significativo del resultado, y es 1 si el número de bits definidos con valor 1 es par (dicho de otra manera, el bit de paridad es 1 si la suma de los bits es par). Según el manual de Intel 80386, la bandera de paridad es cambiada en la familia del procesador x86 por las siguientes instrucciones :

  • Todas las instrucciones aritméticas;
  • Instrucción de comparación (equivalente a la instrucción restar sin almacenar el resultado);
  • Instrucciones lógicas - XOR, AND, OR;
  • Instrucción TEST (equivalente a la instrucción AND sin almacenar el resultado).
  • Instrucción POPF
  • Instrucción IRET
  • Una instrucción o interrupción que cause un cambio en las tareas del hardware

El indicador de paridad se utiliza generalmente en los saltos condicionales, donde por ejemplo, la instrucción JP salta al objetivo dado cuando tiene valor 1 el indicador de paridad y la instrucción JNP salta si no está activa (valor 0). La bandera también se puede leer directamente con instrucciones como PUSHF, que empuja el registro de banderas en la pila.

Una razón común para comprobar la bandera de paridad es para comprar una bandera FPU no relacionada. La FPU tiene cuatro banderas de condición (C0 a C3), pero no pueden ser comprobadas directamente, y en cambio tiene que ser primero copiado al registro de banderas. Cuándo esto pasa, C0 está colocado en la bandera de acarreo, C2 en la bandera de paridad y C3 en la bandera de resultado cero.[1]​ La bandera C2 está activa (valor 1) cuándo p. ej. valores de punto flotantes incomparables (NaN o formato no soportado) son comparados con las instrucciones FUCOM.

ReferenciasEditar

Véase tambiénEditar