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 :
Mon probléme est que l'utilisation de param1 et param2 n'est pas autorisé.
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" ); }
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 :
Mais ca ne fonctionne pas non plus.
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) : ); }
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
Partager