Base64 : Une Méthode Insoupçonnée de Compression dans la Compilation
Les compilateurs C et C++ comme GCC transforment d'abord votre code en assembleur, une représentation bas niveau utilisant des instructions spécifiques à l'architecture du processeur. Ce code assembleur, généralement en ASCII pur, est ensuite converti en code machine binaire par un assembleur.
Lors de la compilation, des caractères Unicode comme 'é' peuvent être encodés en UTF-8, prenant plus d'espace en sortie assembleur. Par exemple, 'é' (2 octets en UTF-8) devient "\303\251" (8 caractères ASCII). Cette expansion pose problème pour l'incorporation de fichiers comme des images via la directive '#embed'.
Base64, une méthode encodant des données binaires en ASCII, pourrait paradoxalement servir à compresser. Bien qu'il augmente généralement la taille (3 octets → 4 caractères), il s'avère utile dans certains cas de compilation. GCC 15 introduit même un pseudo-op "base64" pour encoder efficacement les données.
Cette innovation, présentée par Daniel Lemire le 3 juillet 2025 sur son blog, montre comment Base64 peut optimiser la compilation. Lemire, professeur d'informatique à l'Université du Québec (TÉLUQ), souligne l'importance de cette approche pour les développeurs.