2017-01-05 3 views
3

Je commence à apprendre le langage d'assemblage. Je le connais dans le niveau de base. Je me demande quelle est la taille de l'application dans l'assemblage, c'est-à-dire, comment puis-je les diviser en modules/paquets et les inclure dans d'autres modules? Je parle en particulier des MSNA.Comment décomposer une application NASM en modules/packages et les inclure?

+1

(ceci est fortement influencé par l'opinion, donc prenez avec un grain de sel) Les grandes applications d'assemblage sont généralement organisées comme des applications C++, en utilisant l'assemblage seulement pour quelques parties les plus critiques. Avec une source C++ raisonnablement écrite, la qualité moyenne du code machine produit surpassera facilement l'assemblage écrit à la main, et les quelques parties critiques sont également plus faciles à régler après que le compilateur les ait utilisées pour la première fois. Ne vous attendez donc pas à trouver des outils très sophistiqués pour la gestion de grands projets. En fait il y en a plusieurs, appelés C, C++, Java, C#, etc ...;) – Ped7g

+0

@ Ped7g, incorrect. – ako25

Répondre

3

Vous pouvez:

  • Utilisez %include
    Pour inclure un fichier externe dans l'actuel.
    Ceci peut être contrôlé par le commutateur de ligne de commande -i.

    Vous pouvez également forcer NASM à pré-inclure un fichier à l'aide du commutateur -p.

  • Assemblez plusieurs fichiers
    Depuis MSNA n'est pas un éditeur de liens, vous pouvez profiter de la capacité des linkers ... eh bien, lier des fichiers.

    Utilisez la directive GLOBAL pour rendre un ensemble de symboles visible aux autres modules.
    Utilisez la directive EXTERN pour importer un ensemble de symboles provenant d'autres modules.

    Vous pouvez transmettre tous les fichiers objet à l'éditeur de liens.
    NASM (comme aujourd'hui) ne peut assembler qu'un fichier à la fois, donc un script de construction est nécessaire.


Les deux ci-dessus ne sont pas mutuellement exclusifs, mais vous devez comprendre fondamentalement les NASM output file formats voir lorsque celui-ci est applicable.