Registre non volatile

Définition - Que signifie registre non volatil?

Un registre non volatile est un type de registre dont le contenu doit être préservé lors des appels de sous-programmes. Chaque fois que la valeur d'un registre non volatile est modifiée par la routine, l'ancienne valeur doit être sauvegardée sur la pile avant de changer le registre et cette valeur doit être restaurée avant de revenir. Un registre est similaire à une variable, sauf qu'il existe un nombre fixe de registres. Chaque registre est un emplacement unique dans la CPU dans lequel une seule valeur est enregistrée. Un registre est le seul et unique endroit où des fonctions mathématiques, telles que l'addition, la multiplication, la soustraction, etc., peuvent être effectuées. Les registres contiennent souvent des pointeurs qui font référence à la mémoire. Le déplacement des valeurs entre la mémoire et les registres est un phénomène courant.

Definir Tech explique le registre non volatile

Voici quelques exemples de registres non volatils:

  • ebx: Registre non volatile utilisé à des fins générales. Il est généralement défini sur une valeur commune tout au long d'une fonction pour accélérer les calculs.
  • esi: Registre non volatile utilisé à des fins générales. Il est couramment utilisé comme pointeur, en particulier pour les instructions de classe "rep-" qui nécessitent une source et une destination pour les données. Ici, l'ESI pointe vers la source. Un esi contient généralement des données qui sont utilisées tout au long d'une fonction car elles ne sont pas sujettes à des changements.
  • edi: Un autre registre non volatile utilisé à des fins générales. Ceci est couramment utilisé comme pointeur. Un edi est identique à un esi, à l'exception du fait qu'il pointe généralement vers la destination.
  • ebp: Un autre registre non volatile utilisé comme registre à usage général. Il a deux utilisations distinctes basées sur les paramètres de compilation. Il s'agit soit d'un registre à usage général, soit d'un pointeur de trame. Si la compilation n'a pas été optimisée ou si le code est écrit à la main, ebp surveille l'emplacement de la pile au début d'une fonction. Puisque la pile est modifiée tout au long d'une fonction, lorsque ebp est défini à la valeur d'origine, les variables sauvegardées sur la pile peuvent être référencées facilement. Si la compilation a été optimisée, ebp sera utilisé comme registre à usage général pour stocker tout type de données, tandis que les calculs pour le pointeur de pile sont effectués en fonction de son mouvement.