Flag de paritat
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]
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]- ↑ «Flag register in 8085 microprocessor» (en anglès americà), 16-04-2018. [Consulta: 2 desembre 2023].
- ↑ «Flags Register» (en anglès). [Consulta: 2 desembre 2023].
- ↑ «Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture» (en anglès) p. 97–98, 01-01-2011.
- ↑ «Flag register of 8086 microprocessor» (en anglès americà), 19-04-2018. [Consulta: 2 desembre 2023].