La plupart du code que j'ai lu utilise un int
pour la gestion des erreurs standard (valeurs de retour de fonctions et autres). Mais je me demande s'il est utile d'utiliser un uint_8
compilateur - lire: la plupart des compilateurs C sur la plupart des architectures - produire des instructions en utilisant le mode d'adresse immédiate - à savoir, intégrer l'entier de 1 octet dans le instruction ? L'instruction clé à laquelle je pense est la comparaison après une fonction, en utilisant uint_8 comme type de retour, retourne. Je pourrais penser à des choses incorrectement, comme l'introduction d'un type de 1 byte cause juste des problèmes d'alignement - il y a probablement une raison parfaitement saine de compiler les choses en 4 octets et c'est probablement la raison pour laquelle tout le monde utilise ints - et puisque c'est un problème lié à la pile plutôt qu'au tas, il n'y a pas de frais généraux.Programmation C et efficacité de la variable error_code
Faire la bonne chose est ce à quoi je pense. Mais disons que pour des raisons d'argument c'est un microprocesseur populaire et bon marché pour une montre intelligente et qu'il est configuré avec 1k de mémoire mais possède différents modes d'adressage dans son jeu d'instructions: D
Une autre question pour spécialiser la discussion (x86) serait la suivante: est le littéral:
uint_32 x=func(); x==1;
et
uint_8 x=func(); x==1;
du même type? ou le compilateur va-t-il générer un littéral de 8 octets dans le second cas. Si c'est le cas, il peut l'utiliser pour générer une instruction de comparaison qui a le littéral comme valeur immédiate et l'int retourné comme référence de registre. See CMP instruction types..
Another Refference for the x86 Instruction Set.
Je pense que vous vous inquiétez de ce que l'on appelle habituellement «micro-optimisation». Avez-vous un contexte particulier? –