Accueil Développement Qu'est-ce que l'attribution des registres? - définition de techopedia

Qu'est-ce que l'attribution des registres? - définition de techopedia

Table des matières:

Anonim

Définition - Que signifie l'allocation de registre?

L'allocation des registres fait référence à la pratique consistant à affecter des variables aux registres ainsi qu'à gérer le transfert des données vers et depuis les registres. L'attribution des registres peut se produire:

  • Sur un bloc de base, appelé allocation de registre local
  • Sur une fonction ou une procédure entière, connue sous le nom d'allocation de registre globale
  • Au-dessus des limites de fonction traversées au moyen d'un graphe d'appel, connu sous le nom d'allocation de registre inter-procédurale

Techopedia explique l'allocation de registre

Au cours de la compilation, le compilateur doit déterminer la façon dont les variables sont allouées à une petite plage spécifique de registres. Certaines variables peuvent ne pas être utilisées ou être dites "en direct" simultanément. Cela conduit à affecter certains registres à plusieurs variables. Néanmoins, deux variables live simultanées ne peuvent pas être attribuées au même registre exact sans corrompre la valeur.


Les variables qui ne peuvent pas être attribuées à certains registres doivent être stockées dans la RAM et doivent être chargées dans et hors de chaque lecture et écriture, respectivement, une procédure connue sous le nom de déversement. L'accès aux registres est beaucoup plus rapide que l'accès à la RAM. De plus, il accélère le temps d'exécution du programme compilé; par conséquent, les compilateurs efficaces visent à affecter autant de variables aux registres que possible.


Généralement, la plupart des allocateurs de registres affectent chaque variable à la mémoire principale ou à un registre d'unité centrale de traitement (CPU). La vitesse est le principal avantage de l'utilisation d'un registre. Les ordinateurs disposent d'une gamme finie de registres, ce qui signifie que toutes les variables disponibles ne peuvent pas être attribuées aux registres. Le processus de décalage d'une variable d'un registre vers la mémoire est connu sous le nom de débordement, tandis que la procédure inverse de déplacement d'une variable de la mémoire vers un registre est appelée remplissage. L'allocation intelligente des registres est une étape cruciale pour tout compilateur.


Il existe deux types d'allocation de registres:

  • Allocation de registre local: il s'agit d'un processus d'allocation d'un bloc de base (ou hyper bloc ou super bloc) à la fois. L'allocation de registre local augmente la vitesse.
  • Allocation de registre globale: Si l'utilisation du registre est mauvaise en utilisant l'allocation locale, il est important de recourir à l'allocation de registre globale. Dans l'allocation de registre globale simple, les valeurs les plus actives sont allouées dans chaque boucle interne. L'allocation de registre globale complète utilise une procédure pour identifier les plages en direct dans un graphique de flux de contrôle, attribuer des plages en direct et également fractionner les plages selon les besoins.
Qu'est-ce que l'attribution des registres? - définition de techopedia