web-dev-qa-db-fra.com

Y a-t-il encore une valeur dans l'apprentissage des langues de montage aujourd'hui?

Spécifiquement pour un programmeur de jeu.

Si vous aviez vraiment besoin de quelques routines de montage, vous pouvez rechercher de l'aide, alors que dans les années 80/90, c'était l'une des langues traditionnelles. J'ai lu que les compilateurs peuvent généralement égaux (ou battre) le code de montage écrit à la main, donc à moins que vous ne soyez un programmeur intégré qui ne peut programmer que certains périphériques en montage, par exemple, y a-t-il un point réel de l'apprentissage de nos jours?

5
graham

L'assemblée n'a jamais été une langue traditionnelle. Vous l'apprenez pour les mêmes raisons que les gens l'ont appris dans les années 80/90 et avant cela: c'est près du métal.

Langue de montage d'apprentissage:

  • Vous apprend à quel point la machine fonctionne et
  • Vous donne accès aux meilleures performances possibles (en théorie).

Je dis "en théorie", parce que cela ne vient pas sans frais. Tout ce que vous obtenez gratuitement dans des langues de niveau supérieur (mathématiques, E/S, une structure organisationnelle) est un slog dans la langue d'assemblage, car vous construisez littéralement tout à partir de zéro.

C'est pourquoi, lorsque l'assemblage est utilisé, vous le trouverez généralement dans des méthodes de bibliothèque spécialisées et dans le code en ligne, tandis qu'une langue de niveau plus élevé fait la majeure partie du levage lourd. La langue d'assemblage optimise ce petit bit du code qui profitera au maximum de l'optimisation des performances.

Les compilateurs modernes vous donnent la majeure partie des avantages de la langue de montage, sans frais cognitifs. Mais l'Assemblée d'apprentissage vous apprend toujours comment la machine fonctionne à un niveau profond et que la connaissance influencera votre développement de logiciels longtemps après avoir appris l'assemblée, même si vous n'utilisez jamais l'assemblage tout cela.

Si vous décidez d'apprendre l'assemblée, je vous recommande de l'apprendre sur un appareil intégré, comme une ATMEL AVR. Le nombre d'opcodes à apprendre est plus petit qu'un ordinateur et il n'y a pas de système d'exploitation à craindre.

10
Robert Harvey

Je pense que l'une des valeurs des langues de montage aujourd'hui qui est souvent négligée est la valeur didactique. Je soutiendrais qu'une langue de montage est la meilleure langue d'entrée pour une personne qui n'a jamais programmé auparavant. Pourquoi? Parce que c'est simple et nu. En montage, vous avez essentiellement trois éléments: registres, opcodes et adresses de mémoire. Apprenez à mélanger et à associer ces trois éléments de base et vous pouvez faire beaucoup. Maintenant, prenez C Par exemple, pour une personne qui n'a jamais codé auparavant, c est assez complexe de Darn. DROIT DE LA BAT Vous avez des fonctions, #includes, macros, structures et plus. C'est beaucoup à prendre. Aller à un langage de niveau supérieur comme Java et ensuite, vous avez tout le concept de classes et d'objets qui doivent être compris à l'avance. Mon opinion personnelle est que lors de l'apprentissage de quelque chose de nouveau , Je préfère commencer petit. C'est pourquoi je pense que l'assemblage est un outil didactique négligé.

Maintenant, sur des aspects pratiques, lorsque vous obtenez le travail d'optimisation du code, il est également possible de lire et de comprendre l'assemblage. De nombreuses optimisations portent sur la lecture du code compilé et de voir où le compilateur se vissait et comment changer votre code de niveau supérieur d'une manière permettant au compilateur de générer un code de machine plus rapide.

Spécifiquement sur la programmation de jeux, si vous regardez dans les années 80 et 90, il y avait beaucoup de programmation de montage sur les jeux et autres logiciels haute performance, principalement parce que c'était une nécessité urgente. La plupart des jeux ont utilisé le code de montage pour pouvoir accéder à des fonctionnalités de matériel spécial, telles que des instructions de vectorisation telles que MMX/SSE/ALTIVEC/etc. Aujourd'hui, ces instructions de vectorisation sont disponibles en tant que compilateur intrinsèque. Il y a donc peu de gain dans l'écriture de l'assemblage.

Une autre question qui conduit les programmeurs de jeu éloignés de l'assemblage est la portabilité. Peu de studios ne peuvent pas se permettre de libérer leurs jeux sur une seule plate-forme ces jours-ci. Vous devez écrire du code portable, alors l'assemblage n'est utilisé que comme dernier recours.

Les consoles de dernière génération comme le PS3 ont toujours vu un peu de programmation de montage, principalement en raison de ses caractéristiques matérielles spéciales qui n'ont pas pu être consultées d'une autre manière. Mais le matériel Next-Gen est beaucoup plus proche des ordinateurs de bureau dans l'architecture et les performances. Encore une fois, l'assemblage perd de l'espace là-bas.

8
glampert