Partage
  • Partager sur Facebook
  • Partager sur Twitter

Register class storage

14 août 2017 à 18:07:35

Bonjour,

J'ai lu ici : https://gcc.gnu.org/onlinedocs/gcc/Explicit-Register-Variables.html

Ceci : ..., allowing the compiler to assign registers produces the best code.

Alors pourquoi peu ou presque pas de personne utilise cette méthode ?

Et lorsque l'on déclare une variable de cette façon :

register int a;

Comment savoir dans quel registre se trouve cette dernière ?

Merci pour toutes vos précisions !

-
Edité par Pierre_Decay 14 août 2017 à 18:10:56

  • Partager sur Facebook
  • Partager sur Twitter
14 août 2017 à 18:59:13

Bonjour,

je n'ai jamais utilisé ce mot clé donc ma réponse peut être erroné, donc je t'invite à attendre l'avis de quelqu'un qui s'y connaît plus.

Personnellement je n'en vois pas l'intérêt dans la majorité des cas de devoir utiliser ce mot clé. En effet, les compilateurs ont déjà une phase qui sert à "optimiser" le code machine généré. Peut être que dans des cas spéciaux ça peut être intéressant de l'utiliser mais je pense qu'en temps normal non.

En suite pour ta deuxième question, je ne pense pas que tu puisses connaître le registre que le compilateur choisira d'utiliser. Puisque justement l'allocation des registres va se faire après l'optimisation du code.

  • Partager sur Facebook
  • Partager sur Twitter
Cordialement, Reverse.
14 août 2017 à 20:07:47

Pierre_Decay a écrit:


Et lorsque l'on déclare une variable de cette façon :

register int a;

Comment savoir dans quel registre se trouve cette dernière ?


Probablement en regardant le code assembleur généré...
  • Partager sur Facebook
  • Partager sur Twitter
** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
14 août 2017 à 21:29:16

Okay merci, je vois que cette question fait débat https://stackoverflow.com/questions/578202/register-keyword-in-c

Un peu comme les goto's.

  • Partager sur Facebook
  • Partager sur Twitter
14 août 2017 à 21:52:49

register n'est quasiment plus utilisé. Les compilateurs savent très bien s'il faut utiliser les registres ou pas. Donc plus d'actualité.

D'ailleurs, la dernière norme de C++ (C++17) a supprimé le mot clé "register"

  • Partager sur Facebook
  • Partager sur Twitter
14 août 2017 à 22:01:37

zoup a écrit:

register n'est quasiment plus utilisé. Les compilateurs savent très bien s'il faut utiliser les registres ou pas. Donc plus d'actualité.

D'ailleurs, la dernière norme de C++ (C++17) a supprimé le mot clé "register"

C'est ce que j'ai constaté en lisant la discussion.
  • Partager sur Facebook
  • Partager sur Twitter