• [^] # Re: Question probablement bête

    Posté par (site web personnel, Mastodon) . En réponse au journal #define CHAR_BIT 8. Évalué à 4.

    Actuellement il n'y en a pas vraiment. En C et en C++, on définit que sizeof(char) vaut 1. Quand on incrémente un pointeur sur un char, il s'incrémente donc de 1. Il est impossible d'avoir un type de données plus petit (sauf les booléens et les bitfields), et les types plus gros sont des multiples de la taille d'un char. Mais, on peut implémenter le C et le C++ avec n'importe quel nombre de bits dans un char.

    Il existe quelques architectures incapables d'adresser la mémoire plus finement que 16 ou même 32 octets. En particulier: des machines dont le jeu d'instruction n'est pas un lointain descendant du PDP-11; et certaines familles de DSP conçus par exemple pour le traitement du son en 16 bit.

    Pour aaoir récement implémenté un compilateur C sur une telle architecture, je confirme qu'il a été relativement difficile de trouver une chaîne d'outils capable de prendre cela en compte (mais j'ai finalement convaincu les développeurs de vbgc et de vasm de se pencher sur le problème). Je regrette de ne pas pouvoir faire de C++ sur ce système pour l'instant, c'est un langage intéressant pour réaliser de nombreuses optimisations à la compilation qui me seraient bien utiles,