J'ai appris de Kip Irvine's livre. Si vous ignorez les critiques (justes) de ses bibliothèques (non pertinentes), je peux le recommander comme une bonne introduction au langage lui-même -- bien que pour le realmente Il est intéressant de savoir que les obsessionnels sont à l'affût sur le net.
Je pense qu'il est utile de comprendre ce qui se passe aux niveaux inférieurs. En faisant des recherches sur l'assembleur, vous apprendrez ce qu'est le pipelining des processeurs, la prédiction des branchements, l'alignement des caches, le SIMD, le réordonnancement des instructions, etc. La connaissance de ces éléments vous aidera à écrire un meilleur code de haut niveau.
En outre, la sagesse conventionnelle est de ne pas essayer d'optimiser manuellement l'assemblage la plupart du temps, mais de laisser le compilateur s'en occuper. Lorsque vous verrez des exemples de choses tordues générées par les compilateurs, vous comprendrez mieux pourquoi cette sagesse conventionnelle est valable.
Exemple : Les LFSR fonctionnent rapidement avec l'instruction "rotate-with-carry". Pour des cas spécifiques comme celui-ci, il est tout aussi facile d'écrire la version assembleur que de découvrir si le compilateur est assez intelligent pour le comprendre. Parfois vous savez quelque chose que le compilateur n'a pas.
Il vous permet également de mieux comprendre les problèmes de sécurité - écriture ou exécution, dépassement de pile, etc.
Certains concurrence ne deviennent apparents que lorsque l'on est conscient de ce qui se passe au niveau de chaque instruction.
Cela peut parfois être utile lors du débogage si vous n'avez pas le code source complet.
Il y a la valeur de curiosité. Comment les fonctions virtuelles sont-elles mises en œuvre ? Avez-vous déjà essayé d'écrire des programmes DirectX ou COM en assembleur ? Comment les grandes structures sont-elles renvoyées ? La fonction appelante offre-t-elle un espace pour elles ou vice-versa ?
Il existe également des langages d'assemblage spéciaux pour le matériel graphique, bien que les langages de shaders soient devenus de haut niveau il y a quelques années, mais tout ce qui vous permet d'envisager un problème d'une manière différente est bon.