2009-06-23 6 views
1

Question idiote, mais je ne trouve tout simplement pas le drapeau nécessaire dans gcc. Au fond, j'ai dans mon programme C le code assembleur en ligne suivantx86 assembleur en ligne drapeau

__asm__ __volatile__ ("lea ebx, [timings] \n\t"); 

Lors de la compilation, je reçois un errormessage qui dit: Error: invalid char '[' beginning operand 2 [timings] ' `

Maintenant, je me souviens qu'il ya longtemps je une sorte de drapeau qui dit au compilateur qu'il s'agit d'un assemblage en ligne x86. Mais ne peux pas le trouver en ligne, peut-être quelqu'un peut-il me dire quel drapeau je dois utiliser?

Merci beaucoup!

Répondre

-2

Essayez à la place d'utiliser __asm__. Regardez here pour plus.

Également, essayez de supprimer le \ n \ t de l'intérieur du code d'assemblage.

6

Vous ne pouvez pas spécifier de variables de cette manière avec GCC. Voir this document pour une description détaillée de l'utilisation de l'assembleur en ligne. En outre, gardez à l'esprit que GCC utilise la syntaxe T & T, pas la syntaxe Intel, donc vous devez mettre vos destinations sur la droite.

+0

Je l'ai fait dans le passé, vous pouvez spécifier avec le compilateur que vous utilisez la syntaxe intel mais stupide moi a oublié comment cela –

+0

Je ne sais pas comment ça marche, mais à partir de la documentation GCC: '-masm = DIALECT 'Affiche les instructions asm en utilisant DIALECT sélectionné. Les choix pris en charge sont 'intel 'ou' att' (celui par défaut). Darwin ne supporte pas 'intel '. – ephemient

Questions connexes