Assembleur inline avec Microsoft Visual C++ Toolkit 2003 [Résolu]

Signaler
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007
-
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007
-
Bonjour,

J'aurais voulu savoir si il était possible de faire de l'assembleur inline avec le compilateur gratuit Microsoft Visual C++ Toolkit 2003 ?

J'utilise la syntaxe suivante :
__asm
{
mov eax, 1
}

J'ai une erreur à la compilation.

En revanche la sytaxe suivante fonctionne :
asm("mov $1, %eax");

Pourtant c'est la syntaxe AT&T (très peu pratique) de GCC.

Pourquoi je ne peux pas utiliser la syntaxe Intel ?

Merci d'avance pour votre aide.

8 réponses

Messages postés
106
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
11 février 2008

Juste pour signaler a skirby que chez moi ton code fonctionne sans probleme avec VC toolkit 2003.
Si tu utilise code::blocks n'oublie pas de changer le compilateur dans les parametres de ton projet.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Tu peux utiliser la syntaxe intel avec la version 2005 Express
Tu peux le récupérer gratuitement ici:
http://download.microsoft.com/download/7/6/0/760bd72d-bef3-4e0f-bdfb-1024ad5b005b/vc.iso

Donne quand même ton erreur pour voir
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007

Salut vecchio56

Voici mon code :
#include

int main()
{
std::cout << "Hello world!" << std::endl;

__asm {
mov eax, 1
}

return 0;
}
Comme tu peux le voir on ne peux pas faire plus simple.

Voici l'erreur que j'ai à la compilation :
main.cpp: In function `int main()':
main.cpp:7: error: expected `(' before '{' token
main.cpp:7: error: expected asm body before '{' token
main.cpp:8: error: `mov' undeclared (first use this function)
main.cpp:8: error: (Each undeclared identifier is reported only once for each function it appears in.)
main.cpp:8: error: expected `;' before "eax"
Process terminated with status 1 (0 minutes, 3 seconds)
Pour info, je compile sous CodeBlocks avec Microsoft Visual C++ Toolkit 2003 comme compilateur par défaut.

Sinon, j'ai récupéré la version 2005 Express (400 Mo)
Je vais essayer pour voir ce que ça donne.
Mais si quelqu'un trouve la réponse à ma question avec la version Toolkit 2003 je suis preneur.

Merci et A+
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Malgré ce que tu crois, j'ai bien l'impression que tu compiles actuellement avec gcc. Car chez moi, avec gcc j'obtiens les mêmes messages. Ceux de VC++ sont assez différents (notamment, il y a à chaque fois le numéro de l'erreur)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
C'est clair que ces messages ne sortent pas du compilo VC++, il serait dans tous les cas incapable de transcrire de la syntaxe AT&T car pas fait pour cela..

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
54
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
4 avril 2007

bonsoir,
avec codeblocks, bien que le compilateur par défaut soit c++ toolkit,
chaque nouveau projet est quand même compilé avec gcc.
en fait, avec le compilateur numéro 0.

le plus rapide, clic droit sur le nom du projet et build options pour changer le compilateur.

sinon, une solution possible est de modifier le projet template :
C:\Program Files\CodeBlocks\share\CodeBlocks\templates\win32.cbp


<?xml version="1.0"?>
<!DOCTYPE CodeBlocks_project_file>
<CodeBlocks_project_file>
<FileVersion major="1" minor="1"/>

<Option title="Win32 Application"/>
<Option makefile="Makefile"/>
<Option compiler="1"/>

<Target title="default">
<Option type="0"/>
<Option compiler="1"/>
</Target>

<Linker>



</Linker>


</CodeBlocks_project_file>

voilà, chaque nouveau projet WIN32 sera configuré avec le compilateur numéro 1
bye.
Messages postés
54
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
4 avril 2007

mince, les tabs...

donc, ajout de la ligne <Option compiler="1"/>
dans la section et la sous-section
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007

Merci à vous tous ;o)

Il suffisait simplement de modifier les options du projet (et pas seulement le compilateur par défaut) pour que CodeBlocks compile avec Microsoft Visual Toolkit 2003 et non pas avec GCC.