2009-06-02 6 views
1

Est-il possible de créer, éditer, lier, compiler (compile le mot?) Etc code d'assemblage dans MSVC++?Est-il possible de compiler le code d'assemblage dans MSVC++?

De même, si ce n'est pas possible, comment créer un fichier .exe avec du texte brut, par exemple: convertir le texte en n'importe quel format pour utiliser le code assembleur, puis transformer le code d'assemblage en .exe. (Je dirais compilation, mais je ne pense pas que ce soit le mot correct ici).

Enfin, quels sont les bons endroits pour commencer à apprendre le code d'assemblage? Écrit d'une manière que quelqu'un qui a peu d'expérience peut utiliser.

Je sais que certaines de ces questions sont probablement très stupide, mais je n'ai absolument aucune expérience dans le code de montage et je ne suis pas exactement sûr où commencer.

+4

"assembler" est le mot que vous cherchez. – RBerteig

Répondre

8

Sur x86, oui. Vous pouvez utiliser le mot clé __asm pour mettre l'assembly en ligne dans vos fichiers source standard et utiliser les outils de compilation/liaison MS normaux pour tout compiler.

X64 (ou x86), vous devrez peut-être utiliser les compilateurs de ligne de commande ML and ML64 pour l'assemblage.

+1

Cela ne fonctionne que sur x86 et vous fera mal à passer à x64. Le compilateur x64 ne prend pas en charge l'assembly en ligne. – Michael

+0

True: Sur x64, vous devez utiliser ml.exe. –

+0

@Michael: Mise à jour de ma réponse pour clarifier. –

0

Rechercher des informations sur le mot-clé C++ 'asm'. Cela peut être spécifique au compilateur, mais je sais que VC++ le supporte.

1

En bref, oui.

Selon Wikipedia, MASM a été fourni avec toutes les versions de Visual C plus tard que VC6 et est également disponible dans le Kit de développement de pilote Windows. Les versions prenant en charge les modes réel et protégé 16 bits, 32 bits et 64 bits sont toutes prises en charge.

3

Visual Studio fournit le mot-clé __asm pour compiler l'ensemble en ligne dans c et C++. Il y a aussi une bonne discussion ici sur l'utilisation de inline assembly. Cependant, si vous ne parlez que de compiler l'ensemble, je ne suis pas sûr que Visual C++ soit l'outil correct, mais je suis sûr que Visual Studio est livré avec l'assembleur MASM.

1

Vous pouvez utiliser le mot-clé __asm pour écrire l'assembleur en ligne.

pcasm-book(pdf) est un bon tutoriel pour commencer la programmation de code assembleur.

+0

Je ne sais pas si cela fait une différence, mais une version plus récente du pcasm-book peut être trouvée sur http://drpaulcarter.com/pcasm/pcasm-book- pdf.zip. 2005-03-20 c. 2006-07-23. –

1

Oui, en quelque sorte.

C:\Program Files\Microsoft Visual Studio 9.0\vc\bin>ml 
Microsoft (R) Macro Assembler Version 9.00.30729.01 
Copyright (C) Microsoft Corporation. All rights reserved. 

usage: ML [ options ] filelist [ /link linkoptions] 
Run "ML /help" or "ML /?" for more info 

Vous utiliseriez l'assembleur de macros. Je ne sais pas si Visual Studio va automatiquement "faire la bonne chose" avec les fichiers .asm, mais vous pouvez certainement les éditer avec eux et les assembler avec ml.exe.

Un bon endroit pour commencer à apprendre le langage d'assemblage peut être en apprenant le reverse engineering.

Questions connexes