J'ai trois ou quatre routines d'assembleur (dans environ 20 Mo de source) dans mes sources au travail. Tous sont SSE (2) , et sont liés à des opérations sur des images (assez grandes - pensez à 2400x2048 et plus).
Pour les loisirs, je travaille sur un compilateur, et là vous avez plus d'assembleur. Les bibliothèques d'exécution en sont assez souvent pleines, la plupart d'entre elles ont à voir avec des choses qui défient le régime procédural normal (comme les aides pour les exceptions, etc.)
Je n'ai pas d'assembleur pour mon microcontrôleur. La plupart des microcontrôleurs modernes ont tellement de matériel périphérique (compteurs contrôlés par interruption, même codeurs en quadrature entiers et blocs de construction série) que l'utilisation de l'assembleur pour optimiser les boucles n'est souvent plus nécessaire. Avec les prix flash actuels, il en va de même pour la mémoire de code. De plus, il existe souvent des gammes d'appareils compatibles avec les broches, donc la mise à l'échelle si vous manquez systématiquement de puissance CPU ou d'espace flash n'est souvent pas un problème
Sauf si vous expédiez vraiment 100000 appareils et l'assembleur de programmation permet de réaliser de véritables économies importantes en installant simplement une puce flash d'une catégorie plus petite. Mais je ne suis pas dans cette catégorie.
Beaucoup de gens pensent que l'embarqué est une excuse pour l'assembleur, mais leurs contrôleurs ont plus de puissance CPU que les machines sur lesquelles Unix a été développé. (Microchip livré avec 40 et 60 microcontrôleurs MIPS pour moins de 10 USD ).
Cependant, beaucoup de gens sont coincés avec l'héritage, car changer l'architecture de la micropuce n'est pas facile. Le code HLL est également très dépendant de l'architecture (car il utilise la périphérie matérielle, des registres pour contrôler les E / S, etc.). Il y a donc parfois de bonnes raisons de continuer à maintenir un projet en assembleur (j'ai eu la chance de pouvoir configurer les affaires sur une nouvelle architecture à partir de zéro). Mais souvent, les gens se disent qu'ils ont vraiment besoin de l'assembleur.
J'aime toujours la réponse d'un professeur lorsque nous avons demandé si nous pouvions utiliser GOTO (mais vous pouvez également lire cela en tant qu'ASSEMBLER): "si vous pensez que cela vaut la peine d'écrire un essai de 3 pages sur les raisons pour lesquelles vous avez besoin de cette fonctionnalité, vous pouvez l'utiliser . Veuillez soumettre l'essai avec vos résultats. "
J'ai utilisé cela comme principe directeur pour les fonctionnalités de bas niveau. Ne soyez pas trop à l'étroit pour l'utiliser, mais assurez-vous de le motiver correctement. Élevez même une barrière artificielle ou deux (comme l'essai) pour éviter un raisonnement alambiqué comme justification.