Registre d'état
Le registre d'état, ou registre de drapeaux, est un ensemble de bits représentant des drapeaux au sein d'un processeur. Le registre RFLAGS est un exemple de registre d'état propre à l'architecture de processeurs x64.
Les bits composant le registre d'état sont indépendants les uns des autres, et la valeur de chacun apporte une information supplémentaire quant au résultat d'une opération antérieure. En effet, au cours d'un calcul, le processeur va automatiquement mettre à jour le registre d'état, en plus de fournir le résultat de l'opération. Le registre d'état comporte en général un minimum de quatre drapeaux, que sont les indicateurs de nullité (résultat égal à zéro), de retenue (l'opération a produit une retenue), de dépassement de capacité (le signe du résultat diffère du signe des opérandes), ainsi que de négativité (le résultat est inférieur à zéro).
Ces drapeaux peuvent ensuite être utilisés, notamment pour déterminer si une opération conditionnelle doit être exécutée ou non. Une utilisation fréquente de ce registre consiste à déterminer si un branchement (saut vers une portion spécifique du code) doit être effectué. Pour cela, on effectue tout d'abord une comparaison entre deux valeurs, qui consiste dans les faits à réaliser une soustraction entre les deux valeurs, opération qui met à jour le registre d'état. Ensuite, il suffit par exemple de tester la valeur du registre indiquant un résultat négatif pour savoir laquelle des deux valeurs était la plus grande, et en fonction de cette valeur, réaliser ou non le branchement.
Drapeaux les plus communs
Les drapeaux ci-dessous sont présents dans la plupart des processeurs actuels.
Drapeau | Nom | Description |
---|---|---|
Z | Zéro | Indique que le résultat d'une opération est nul. |
C | Retenue (Carry) | Le résultat de l'opération est incomplet, car une retenue a été produite. Ce bit peut-être utilisé pour réaliser des calculs sur des opérandes plus grandes que la taille du processeur, en séparant les valeurs. Par exemple, un processeur 32 bits pourra additionner des mots de 64 bits en les séparant en deux mots de 32 bits, additionnés indépendamment, et en utilisant la retenue pour faire le lien entre les deux. |
N / S | Signe (Negative ou Sign) | Indique que le résultat de l'opération est inférieur à zéro. |
V / O | Dépassement de capacité (OVerflow) | Le signe du résultat diffère du signe des opérandes, ce qui indique que la valeur a débordé sur le bit de signe, et donc que la taille du processeur est trop petite pour stocker le résultat. |