inline asm beim gcc kompilieren. AT&T-Syntax??



  • hey,

    will follgenden code mit dem gcc kompilieren.

    int main () {
    unsigned int cyc;
    __asm (
    "CPUID;"
    "RDTSC;"
    "movl %eax, cyc;"
    );

    return 1;
    }

    Der gcc benutzt doch AT&T-Syntax oder?
    Trotzdem bekomme ich beim kompilieren follgenden fehler:

    /tmp/ccK8Qt3I.o(.text+0x15): In function main': : undefined reference tocyc'
    collect2: ld returned 1 exit status

    Auch wenn ich die dritte zeile zum testen folgendermaßen ändere:

    "movl %eax, $5;"

    kommt beim kompilieren diese für mich unverständliche fehlermeldung:

    /tmp/ccYE7xDK.s: Assembler messages:
    /tmp/ccYE7xDK.s:13: Error: suffix or operands invalid for `mov'

    warum sagt er "mov" wenn ich die AT&T-Syntax benutze und bei mir
    "movl" steht.
    Glaube mit der Intel Syntax klappt das kompilieren auch nicht.

    bitte helft mir, bin voll am verzweifeln.
    danke
    kinek



  • du kannst in dem Assemblercode keine Bezeichner von Variablen des C Codes benutzen!

    http://www-106.ibm.com/developerworks/linux/library/l-ia.html?dwzone=linux


Anmelden zum Antworten