Utilisation de Visual Studio 2008 pour assembler, lier, déboguer et exécuter le code d'assemblage MASM 6.11

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

Question

Je souhaite utiliser Visual Studio 2008 dans toute la mesure du possible tout en compilant / liant / construisant / etc de manière efficace, comme si tous ces processus de construction étaient exécutés à l'aide des outils fournis avec MASM 6.11. La version exacte de MASM n’a aucune importance, dans la mesure où elle se situe dans la plage 6.x, car c’est ce que mon collège utilise pour enseigner l’assemblage 16 bits.

J'ai effectué des recherches sur le sujet et j'en suis arrivé à la conclusion qu'il existe plusieurs options:

  1. Reconfigurez VS pour appeler les exécutables MASM 6.11 avec les mêmes indicateurs, etc. comme le ferait MASM 6.11.
  2. Créez un ou plusieurs fichiers batch intermédiaires à appeler par VS pour appeler les commandes appropriées pour le lieur de MASM, etc.
  3. Reconfigurez les outils / règles de construction intégrés de VS (assembleur, éditeur de liens, etc.) pour fournir un environnement identique à celui utilisé par MASM 6.11.

L’option (2) a été évoquée lorsque j’ai réalisé que les options disponibles dans les VS "Outils externes" L’interface peut être insuffisante pour appeler correctement les outils de compilation de MASM. Ainsi, un fichier de commandes interprétant la méthode stricte de passage des arguments de VS peut s’avérer utile, car beaucoup de mes connaissances sur la façon de faire fonctionner cela impliquaient l’appel manuel de ML.exe, LINK.exe. , etc à partir de l'invite de commande.

Vous trouverez ci-dessous plusieurs liens qui peuvent s’avérer utiles pour répondre à ma question. S'il vous plaît gardez à l'esprit que je les ai tous lus et aucun n'est la solution réelle. J'espère seulement que ma spécification MASM 6.11 n'empêche personne de donner une réponse peut-être plus générale.

Méthode similaire à Option (2), mais les utilisateurs du fil ne sont pas joignables:
http://www.codeguru.com/forum/archive/ index.php / t-284051.html
(j'ai également des doutes sur la nécessité d'un fichier de traitement par lots intermédiaire)

Explication périmée à ma question:
http://www.cs.fiu.edu/~downeyt/cop3402/ masmaul.html

Probablement la solution la plus proche pour laquelle je suis parvenue à une solution définitive, mais elle fait référence à une suite d'outils de quelque chose à part MASM, utilise également un fichier de commandes:
http://www.kipirvine.com/asm/gettingStarted/index. htm # 16 bits

Je m'excuse si ma terminologie décrit les outils utilisés à chaque étape du code - > Le processus exe est désactivé, mais comme j'essaie de reproduire la totalité des étapes entre la fin de l'écriture du code et la génération d'un exécutable, je ne pense pas que cela compte beaucoup.

Était-ce utile?

La solution

Il existe un fichier de règles MASM situé à l'emplacement (système 32 bits, supprimer (x86) ):

.
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCProjectDefaults\masm.rules

Copiez ce fichier dans le répertoire de votre projet et ajoutez-le aux règles de construction personnalisées de votre projet. Ensuite, "Modifier le fichier de règles ...", sélectionnez la règle de construction MASM, puis "Modifier la règle de construction ...".

Ajouter une propriété:

  • Type de propriété de l'utilisateur: Chaîne
  • Valeur par défaut: *. inc
  • Description: Ajouter des dépendances supplémentaires au fichier MASM.
  • Nom complet: Dépendances supplémentaires
  • est en lecture seule: False
  • Nom: Dépendances supplémentaires
  • Nom de la page de propriété: Général
  • Commutateur: [valeur]

Définissez la valeur Dépendances supplémentaires sur [Dépendances supplémentaires] . La construction doit maintenant détecter automatiquement les modifications apportées à *. Inc et vous pouvez modifier les propriétés d'un fichier asm individuel pour en spécifier d'autres.

Autres conseils

Vous pouvez créer un projet de makefile. Dans Visual Studio, sous Fichier / Nouveau / Projet, choisissez le projet Visual C ++ / Makefile.

Ceci vous permet d'exécuter une commande arbitraire pour construire votre projet. Il n'est pas nécessaire que ce soit C / C ++. Il n'est même pas nécessaire que ce soit un makefile traditionnel de NMake. Je l'ai utilisé pour compiler un pilote à l'aide d'un fichier de commandes et d'un script NAnt.

L'exécution de la chaîne d'outils MASM 6.x devrait être assez simple.

Je suggérerais de définir des règles de construction personnalisées en fonction de l’extension du fichier. (Visual Studio 2008, du moins dans Professinal Edition, peut générer des fichiers .rules pouvant être distribués). Vous pouvez y définir des outils de construction personnalisés pour les fichiers asm. En utilisant cette approche, vous devriez pouvoir laisser l’étape de l’éditeur de liens telle quelle.

Il y a bien longtemps, nous utilisions MASM32 le texte du lien en tant qu'EDI pour aider les étudiants à apprendre l'assemblage. Vous pouvez vérifier leurs fichiers batch ce qu’ils font pour assembler et lier.

Au lieu de fichiers de commandes, pourquoi ne pas utiliser l’étape de construction personnalisée définie dans le fichier?

Si vous envisagez d’utiliser Visual Studio, ne pouvez-vous pas leur attribuer un projet squelette en C / C ++ avec le point d’entrée d’une application console appelant une fonction ayant un bloc d’assemblage inline vide et les laisser remplir leurs résultats en elle?

Pourquoi n'utilisez-vous pas le guide d'Irvine? La bibliothèque d'Irvine est agréable et si vous le souhaitez, vous pouvez l'ignorer et travailler directement avec les procs Windows. Je cherche un guide comme celui-ci, celui d'Irvine étant la meilleure solution.

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