Assembleur Intel syntaxe AT&T
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Assembleur Intel syntaxe AT&T



  1. #1
    invite2d8d5438

    Assembleur Intel syntaxe AT&T


    ------

    Bonjour à tous,

    Voici quelques jours que je n'arrive pas a résoudre ce problème. Lorsque je compile le programme suivant (gcc 3.4.4, Linux redhat), j'obtiens systématiquement l'erreur suivante (sur la ligne en gras):
    error: impossible constraint in `asm'
    Le seul registre qui ne génère pas d'erreur, c'est le registre ebx.
    Si quelqu'un a une idée, ce serait vraiment super.

    Merci.

    Code:
      
    void my_memcpy(void *d,void *s,int length) {
    
    __asm__ __volatile__ (
      " movl 	 %%ecx,%%edx\n"
      " andl         $3,%%ecx\n"
      " rep movsb\n"
      " movl         %%edx,%%ecx\n"
      " shrl         $2,%%ecx\n"
      " rep movsl\n"
    :          		            // ouput
    : "esi"(s),"edi"(d),"ecx"(length)  // input
    : "ecx","edx","edi","esi"          // modify
    
    );
    }

    -----

  2. #2
    invite4ad25ccf

    Re : Assembleur Intel syntaxe AT&T

    Tes contraintes sur les registre m'ont pas l'air tres correctes. Un exemple du manuel de GCC inline (http://www.ibiblio.org/gferg/ldp/GCC...-HOWTO.html#s6 ) :
    Code:
    int main(void)
    {
            int foo = 10, bar = 15;
            __asm__ __volatile__("addl  %%ebx,%%eax"
                                 :"=a"(foo)
                                 :"a"(foo), "b"(bar)
                                 );
            printf("foo+bar=%d\n", foo);
            return 0;
    }
    ou
    Code:
     __asm__ __volatile__(
                          "   lock       ;\n"
                          "   addl %1,%0 ;\n"
                          : "=m"  (my_var)
                          : "ir"  (my_int), "m" (my_var)
                          :                                 /* no clobber-list */
                          );
    Sinon, tu peux aussi utiliser la syntax NASM avec gcc qui est un peu plus jolie je trouve, et aussi faire des fonction full asm dans un fichier à part, ca t'evite la syntaxe avec des \n et des " tout le temps

    Code:
    rattle@nana ~/asmtest$ cat sine.s
    .intel_syntax noprefix
    .globl _sine
    _sine:
      finit                          /* initialize FPU                */
      fld qword ptr [esp+4]          /* load x onto FPU stack         */
      fsin                           /* calculate sine                */
      lea eax, [esp+4]               /* get address of x              */
      fst qword ptr [eax]            /* store sine in x on the stack  */
      ret                            /* return                        */
    
    rattle@nana ~/asmtest$ cat main.c
    #include <stdio.h>
    double sine(double);
    
    int main() {
      double d = sine(.45);
      printf("%f\n",d);
    }
    
    rattle@nana ~/asmtest$ gcc -masm=intel -o sine sine.s main.c
    
    rattle@nana ~/asmtest$ ./sine
    0.434966

  3. #3
    invite2d8d5438

    Re : Assembleur Intel syntaxe AT&T

    OK merci, en fait j'ai déjà essayé avec les lettres et ça n'a rien donner.
    Mais je ressayerai demain ( J'suis pas sous Linux là ).
    Pour ce qui concerne NASM, justement je voudrais éviter d'avoir à m'embêter avec le passage de paramètres (le esp), de plus ç'est en fait pour un projet plus vaste qui doit impérativement se compiler en gcc natif et sur plusieurs release de Linux (et des veilles !). On aimerait bien éviter d'avoir à installer NASM.
    Ceci je suis d'accord avec toi, cette syntaxe AT&T, c'est galère....
    Je crois qu'il existe une directive .intel_syntax, je vais continuer mes recherches.

    Merci
    A+

Discussions similaires

  1. Question de syntaxe
    Par invitefa769f9f dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 25/10/2007, 12h30
  2. AMD/ Intel & nVIDIA/ATI
    Par invite2e03b3ba dans le forum Matériel - Hardware
    Réponses: 3
    Dernier message: 25/09/2007, 23h57
  3. Syntaxe programme C++
    Par invite55fe29e6 dans le forum Électronique
    Réponses: 6
    Dernier message: 06/07/2007, 10h50
  4. Syntaxe mutation
    Par invite58d2d622 dans le forum Biologie
    Réponses: 4
    Dernier message: 11/04/2006, 16h53
  5. Syntaxe
    Par invite58d2d622 dans le forum Chimie
    Réponses: 1
    Dernier message: 17/01/2006, 16h33
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...