Est-ce langage assembleur `assembler` spécifique aussi? Assembleur qui est le mieux?

StackOverflow https://stackoverflow.com/questions/1995472

  •  22-09-2019
  •  | 
  •  

Question

J'apprends langage assembleur. J'ai commencé avec le PC Assembly Language de Paul A. Carter qui utilise MSNA (Netwide Assembleur). Puis au milieu et je suis passé commencé à lire Introduction to 80×86 Assembly Language and Computer Architecture qui utilise MASM.

NASM I utilisé pour écrire, pour l'initialisation d'un octet

  

db 110101b

Dans MASM J'utilise

  

BYTE 110101b

Je suis au milieu de la lecture. elles seront différentes puisque ce sont des directives Assembleur pour chaque assembleur. droite? Est-ce pas ces développeurs assembleur suivent une norme pour ces directives? Parce que, ils savent que mnémoniques sont spécifiques du processeur. Ainsi, sa douleur dans le cul d'apprendre et le code en langage assembleur.

Maintenant, s'ils suivent des directives différentes, sa douleur plus si vous changez assembleur ou si vous changez le système d'exploitation (développeur MASM est en grande difficulté s'il va à Linux).

Ma confusion est que je devrais me familiariser avec MSNA ou MASM? Je suis fan de fenêtres, mais je dois travailler (à l'avenir) sur Linux aussi.

devrait être intitulé Chaque livre « _________ __________ Langue Assemblée en utilisant Assembleur »

Était-ce utile?

La solution

Malheureusement, il n'a jamais été une norme pour le langage d'assemblage. Vous aurez juste besoin d'apprendre les directives que votre assembleur prend en charge. Heureusement, la plupart des directives, tout en ayant des noms différents, sont sémantiquement similaires comme db et BYTE.

Mais attendez! Il y a pire, surtout pour les architectures x86. Vous avez (au moins) deux formes de code qui assembleurs peuvent accepter: Intel et le format AT & T. AT & T le format inverse l'ordre de la plupart des opérandes aux instructions (ou est-ce visa versa; -).

MSNA est probablement un meilleur choix pour la portabilité, mais vous pouvez également regarder la GNU assembleur ..

Autres conseils

Intel Syntaxe / AT & T Syntaxe

Avec x86 en particulier, les premiers assembleurs étaient d'Intel et assembleurs largement compatibles de Microsoft formé une branche.

Ces assembleurs organiser source et opérandes destination de droite à gauche et ont un peu (et à mes yeux, une sorte de farfelue) couche d'abstraction qui utilise un seul mnémotechnique pour 8, 16 et opérations 32 bits et en déduit la machine réelle opcode à utiliser en fonction des propriétés de l'opérande. Modificateurs existent (sur des opérandes) pour forcer une taille particulière.

Mais Unix était également important et il y avait une ligne assembleur complètement différent avec des traditions différentes et conventions.

Le fournisseur Unix d'origine était AT & T, qui possédait la propriété intellectuelle développée chez Bell Labs. Une série de projets BSD et Linux puis a continué avec cette tradition. Ces assembleurs historiquement opérandes de processus de gauche à droite, ont une conception de rechange optimisé pour la vitesse, et lorsqu'il est utilisé par les humains, ils utilisent généralement cpp pour les macros et conditionals, même si l'assembleur a également des fonctions parallèles.

Ces jours-ci que vous utilisez probablement VS sur MS ou Gnu sous Linux ou Mac, mais c'est pourquoi nous disons encore AT & T vs Intel. L'assembleur GNU a une option pour assembler les deux sens, bien qu'il soit encore vraiment dans le camp AT & T.

En général, oui. Ils sont pour la plupart fonctionnalités compatibles, donc la conversion d'une syntaxe assembleur à un autre est généralement pas très difficile si vous savez à la fois.

Les processeurs sont tous documentés dans un fabricant fourni manuel de référence. Ce généralement développé dans la syntaxe normative (ainsi que l'assembleur fourni par le fournisseur) pour les programmes de montage sur une plate-forme particulière. Par conséquent, de nombreux processeurs à partir d'un seul fournisseur ont une syntaxe similaire.

La situation est devenue plus complexe avec le deuxième approvisionnement des processeurs et le développement éventuel des assembleurs multicible qui, pour des raisons historiques, la plupart du temps utilisent une syntaxe cohérente sur toutes les plateformes. Cela fournit également des avantages discutables lorsque le code de portage sur les plates-formes.

Vos meilleurs choix sont: choisir une notation que vous êtes à l'aise avec et accepter des livres avec une syntaxe différente, voyez si vous pouvez trouver les bibliothèques macro inter-systèmes ou des outils de traduction ou mordre la balle et apprendre plusieurs dialectes. Le troisième est généralement tolérable bien qu'il fait construire des bibliothèques privées de main-d'œuvre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top