Quels sont les avantages du langage assembleur et où elle peut être apprise?

Je ne l’aborderai les négatifs, je suis sûr que d’autres qui commentera.  Les avantages sont,

  • Vitesse d’exécution
  • Contrôle plus précis de l’ordre d’exécution.
  • Taille du code
  • Pavillon accès, carry, débordement, etc..
  • Contrôle du processeur.

Vitesse d’exécution

Comme je l’ai montré à un poste différent, même quelque chose d’aussi simple qu’un tableau de nombres en résumé est plus rapide en assembleur, puis en C.  Si vous avez vraiment besoin de quelque chose de plus rapide, vous pouvez presque toujours rendre plus rapide en assembleur, souvent plus alors 2 X comme rapide.  (Voir la réponse de Dan Duncalf à est une boucle avec une opération de somme simple écrite en langage d’assemblage plus efficace que celui écrit en C?)

Contrôle plus précis

Pensez ici en termes de serrures.  Les processeurs modernes peuvent exécuter les instructions dans le désordre, et la plupart des compilateurs également en ordre code pour qu’il puisse être plus efficace dans un seul thread.  Si votre utilisation du code multi-threading, traitant particulièrement de verrous, ou de mémoire qui peut être écrite ou lues à par un autre thread, vous devez une barrière de mémoire (ou barrière mémoire), qui va vous assurer d’obtenir l’ordre d’exécution dont vous avez besoin.  Bien qu’il existe des méthodes C++ pour ce faire, aucun n’est aussi sans ambiguïté comme faire en assembleur.

Taille du code

J’ai écrit une fois un clone de type space invader dans 256 octets de mémoire sur une machine de DOS.  Il y a encore de 4096 octets démos graphiques 3D dans la scène démo déployée.  On pourrait penser à une langue d’interprétation serait plus petite... mais ils ne sont généralement pas.

Drapeau des accès, carry, débordement

Quand j’ai appris C, après apprentissage assembleur, je devais tourner une grande chaîne de bits.  J’ai demandé au gars de C senior, comment je fais pivoter à travers la porte le drapeau.  La réponse est, vous n’avez pas.  Ajoutant avec carry, soustraire avec emprunt, rotation par l’intermédiaire de porte drapeau sont autant de façons d’étendre les opérations à autant d’octets que vous le souhaitez.  Il n’y a pas de moyen facile de tourner une image d’un bit dans les langages de haut niveau.

Contrôle du processeur.

Il y a un tas de choses que le processeur peut faire, qui simplement ne mappent vers C ou d’autres langages de niveau supérieurs.  Multiply est celui qui tout le monde utilise, mais la plupart des langues implémentent mal.  Si vous multipliez deux résultats de 32 bits, un processeur 32 bits renvoie un résultat de 64 bits.  Mais les langages de haut niveau seront de retour seulement un résultat de 32 bits et un dépassement de capacité.   Voici une liste partielle des instructions spécifiques de processeur sur la plateforme Intel.

  • Vecteur des Instructions (jusqu'à 512 bits).
  • Stockage des données conditionnel (avec un masque), dans une seule instruction.
  • AES encrpytion et le déchiffrement.
  • Type de CPU ID déterminer et jeu de caractéristiques du processeur.
  • Retour des sinus et des cosinus dans la même instruction.
  • Clôtures de Load et Store.
  • Interruptions de masquage.
  • Beaucoup de numérisation et bits comptage instructions
  • Initialiser tous les 16 registres à zéro (dans une instruction unique)
  • Autres choses comme la protection mémoire, chargement interrompent tables de descripteur, pagination, un tas de niveau instructions pour l’OS.

En ce qui concerne la façon d’apprendre l’Assemblée.  Obtenez un livre et un assembleur.  L’assembleur est livré gratuitement avec la version gratuite de Visual Studio.  Et pour les références du livre, Découvrez cette question quora.  Quels sont quelques grands livres pour apprendre le langage assembleur?


Tags: Apprendre à programme, Programmation informatique, Langages de programmation, Langage d’assemblage