Assembleur g++ et .intel_syntax
Bonjour,
Je souhaite compiler un code qui contient de l'assembleur.
J'utilise g++ pour compiler le tout, et la notation AT&T nescessaire à g++ pour coder de l'assembleur est plus que bordelique. J'ai donc utilisé la commande ".intel_syntax", qui me permet de coder l'assembleur de maniere classique, sous g++. Pour plus de clareté, je vous exposes le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
void MaFonction(char *param1, char *param2)
{
asm
(
".intel_syntax noprefix\n"
"mov eax, param1\n"
"mov ecx, param2\n"
[...]
".att_syntax\n"
);
} |
Mon probléme est que l'utilisation de param1 et param2 n'est pas autorisé.
Je n'arrive pas a utiliser ces parametres dans mon code assembleur.
J'ai observer une methode qui consiste a ajouter des information en fin de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
void MaFonction(char *param1, char *param2)
{
asm
(
".intel_syntax noprefix\n"
"mov eax, a\n"
"mov ecx, b\n"
[...]
".att_syntax\n"
:
:"b" (param2), "a" (param1)
:
);
} |
Mais ca ne fonctionne pas non plus.
J'ai l'erreur : impossible constraint in 'asm'
Pour information, je travail sous windows XP. J'utilise Qt.
Mon code assembleur fonctionne parfaitement sous VC++ si je l'adapte.
Avez vous une idée de la provenance de ce problème ? Et de quelle manière le résoudre ?
Cordialement,
PKO