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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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