Flag de paritat

De la Viquipèdia, l'enciclopèdia lliure

En els processadors d'ordinador, la bandera de paritat indica si el nombre de bits establerts és parell o senar en la representació binària del resultat de l'última operació. Normalment és un bit únic en un registre d'estat del processador.[1]

Targeta de referència del llenguatge ensamblador Intel 8080 / 8085 amb mnemotècniques, instruccions de màquina hexadecimals, banderes.

Per exemple, suposem una màquina on un indicador de paritat establert indica paritat parell. Si el resultat de l'última operació fos 26 (11010 en binari), la bandera de paritat seria 0 ja que el nombre de bits establerts és senar. De la mateixa manera, si el resultat fos 10 (1010 en binari), la bandera de paritat seria 1.[2]

Processadors x86[modifica]

En els processadors x86, el senyalador de paritat reflecteix la paritat només del byte menys significatiu del resultat, i s'estableix si el nombre de bits establerts és parell (dit d'una altra manera, el bit de paritat s'estableix si la suma dels bits és fins i tot). Segons el manual d'Intel 80386, la bandera de paritat es canvia a la família de processadors x86 mitjançant les instruccions següents:

  • Totes les instruccions aritmètiques;
  • Instrucció de comparació (equivalent a una instrucció de resta sense emmagatzemar el resultat);
  • Instruccions lògiques - XOR, AND, OR;
  • la instrucció TEST (equivalent a la instrucció AND sense emmagatzemar el resultat).
  • la instrucció POPF
  • la instrucció IRET
  • una instrucció o interrupció que provoca un canvi de tasca de maquinari

En els salts condicionals, s'utilitza el senyalador de paritat, on per exemple, la instrucció JP salta a l'objectiu donat quan s'estableix el senyalador de paritat i la instrucció JNP salta si no està establerta. La bandera també es pot llegir directament amb instruccions com PUSHF, que empeny el registre de banderes a la pila.

Un dels motius habituals per provar el senyalador de paritat és comprovar un indicador x87-FPU no relacionat. La FPU té quatre indicadors de condició (C0 a C3), però no es poden provar directament i, en canvi, s'han de copiar primer al registre de senyals. Quan això succeeix, C0 es col·loca a la bandera de transport, C2 a la bandera de paritat i C3 a la bandera zero.[3] El senyalador C2 s'estableix quan, per exemple, es comparen valors de coma flotant incomparables (NaN o format no compatible) amb les instruccions FUCOM.[4]

Referències[modifica]

  1. «Flag register in 8085 microprocessor» (en anglès americà), 16-04-2018. [Consulta: 2 desembre 2023].
  2. «Flags Register» (en anglès). [Consulta: 2 desembre 2023].
  3. «Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture» (en anglès) p. 97–98, January 2011.
  4. «Flag register of 8086 microprocessor» (en anglès americà), 19-04-2018. [Consulta: 2 desembre 2023].