RFLAGS

Le registre RFLAGS - aussi dit registre de drapeaux - est un registre spécifique des processeurs de la famille x86-64. Il est compatible avec les registres EFLAGS et FLAGS hérités des familles x86 et précédente.



Catégories :

Microprocesseur

Recherche sur Google Images :


Source image : american-products.info
Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur.

Page(s) en rapport avec ce sujet :

  • Registre de DRAPEAUX contient drapeaux comme portez le drapeau, drapeau... Les préfixes spéciaux permettent l'inclusion des instructions de 32 bits... bits a fait avant lui (RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFLAGS, DÉCHIRURE).... (source : worldlingo)
  • . 5 Chiffrement et intégrité des données et des instructions....... du registre de drapeaux (eflags sur une architecture 32 bits ou rflags sur 64 bits), ... (source : )

Le registre RFLAGS - aussi dit registre de drapeaux - est un registre spécifique des processeurs de la famille x86-64 (64 bits). Il est compatible avec les registres EFLAGS et FLAGS hérités des familles x86 (32 bits) et précédente (16 bits).

Il sert à fixer et de connaître l'état du processeur à tout moment grâce aux divers bits qui le composent. Ce registre permet ainsi d'avoir à tout instant l'état résultant d'une instruction ayant été exécutée par le processeur, la majorité des instructions des processeurs x86 affectant ce registre.

L'état des différents bits (les drapeaux) du registre RFLAGS permet au processeur de prendre des décisions, par exemple au niveau des branchements conditionnels (sauts et boucles) ou après une opération arithmétique (retenue ou débordement, etc. ).

Vue d'ensemble du registre RFLAGS

Le registre RFLAGS est constitué de 64 bits et n'est disponible que sous les processeurs 64 bits (x86-64). Il est cependant compatible rétroactivement avec les registres EFLAGS (disponible sur les processeurs x86 32 bits) et FLAGS (disponible sur les processeurs 16 et 32 bits). Il se compose comme suit :

En cas d'exécution en mode de compatibilité 32 bits (quand le processeur 64 bits exécute du code 32 bits) seul EFLAGS et FLAGS sont accessibles.


Les 64 bits du registre RFLAGS et les noms de ses drapeaux.
RFLAGS
Bits 63.. 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13.. 12 11 10 9 8 7 6 5 4 3 2 1 0
Drapeaux - - - - - - - - - - - ID VIP VIF AC VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF

Nota Bene : Les bits 63 à 32, 31 à 22, 15, 5, 3, 1 (en gris sur le tableau) sont des bits réservés, leur utilisation et fonctionnement est inconnu. Les bits 15, 5, 3, 1 ont une valeur fixe donnée dans le tableau ci-dessus.

L'on dit d'un drapeau qu'il est armé quand il est à 1 et désarmé quand il est à 0.

Catégories de drapeaux

On peut distinguer trois catégories différentes de drapeaux à l'intérieur du registre RFLAGS.

Drapeaux d'état

Les bits 0, 2, 4, 6, 7 et 11 du registre RFLAGS indiquent les résultats d'opérations arithmétiques résultant d'instructions telles que ADD, DIV, MUL, SUB, etc.

Instructions affectées par les drapeaux d'état

Les instructions conditionnelles suivantes utilisent un ou plusieurs des drapeaux d'état comme condition pour les branchements conditionnels, l'armement d'octets ou les conditions de fin de boucle :

Instructions modifiant les drapeaux d'état

Seul le drapeau CF peut être modifié directement via certaines instructions. Ces instructions sont les suivantes :

Les instructions suivantes, œuvrant sur des bits, peuvent copier un bit spécifique directement dans le drapeau CF :

Drapeau de contrôle

Le bit 10 du registre RFLAGS est l'unique drapeau de contrôle (aussi nommé drapeau de direction).

Instructions affectées par le drapeau de contrôle

Les instructions œuvrant sur les chaînes de caractères sont les seules instructions affectées par le drapeau de direction. Ces instructions sont les suivantes :

Instructions modifiant le drapeau de contrôle

Les instructions servant à modifier directement le drapeau de direction sont les instructions suivantes :

Les drapeaux dispositif

Les drapeaux dispositif du registre RFLAGS sont contrôlés par le système d'exploitation ou les opérations de surveillance dispositif. En temps normal un programme applicatif ne devrait pas modifier l'état de ces drapeaux. Les bits 12 et 13 ne sont pas reconnus comme deux drapeaux, mais comme un champ de 2 bits (le champ IOPL).

Instructions affectées par les drapeaux dispositif

En général les drapeaux dispositif ne changent pas la manière dont s'exécutent les instructions, ils n'affectent que le fonctionnement général du dispositif d'exploitation. Cependant, le champ IOPL peut par exemple permettre d'utiliser certaines instructions à différents niveaux de protections.

Instructions modifiant les drapeaux dispositif

Seul le champ IOPL (bits 12 et 13) peut être affecté directement par des instructions. Ces instructions ne sont utilisables que si le niveau de privilège est le plus élevé (niveau 0)  :

Instructions affectant RFLAGS

Outre les instructions permettant d'armer ou de désarmer un seul bit (voire deux pour le champ IOPL) du registre RFLAGS, certaines instructions permettent de lire voir d'écrire tout ou partie du registre RFLAGS. Ces instructions sont :

Exemple d'utilisation de RFLAGS

N. B : Ces différents codes ne sont exécutables que sur un processeur de la famille x86-64 (64 bits).

Langages C ou C++

#include <iostream>

int main(void)
{
	unsigned long long var_RFLAGS = 0;

	__asm{
		PUSHFQ; // pousse les 64 bits de RFLAGS sur la pile
		POP var_RFLAGS; // met RFLAGS dans la variable var_RFLAGS
	}

	std::cout << std::hex << "Valeur du registre RFLAGS : 0x" << var_RFLAGS;

	return 0;
}

Recherche sur Amazone (livres) :




Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/RFLAGS.
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 07/04/2010.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.
Accueil Recherche Aller au contenuDébut page
ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
Aller au menu