Assembleur inline avec Microsoft Visual C++ Toolkit 2003

Résolu
skirby
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007
- 28 janv. 2006 à 13:08
skirby
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007
- 29 janv. 2006 à 01:09
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

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

28 janv. 2006 à 22:47
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.
3
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
12
28 janv. 2006 à 13:37
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
0
skirby
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007

28 janv. 2006 à 18:47
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+
0
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
12
28 janv. 2006 à 19:50
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
28 janv. 2006 à 19:54
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++
0
cs_chris91
Messages postés
54
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
4 avril 2007

29 janv. 2006 à 00:42
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.
0
cs_chris91
Messages postés
54
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
4 avril 2007

29 janv. 2006 à 00:45
mince, les tabs...

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

29 janv. 2006 à 01:09
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.
0