Problem mit GCC-Inline-Asm



  • Hallo!

    Bei der folgenden Zeile GCC-Inline-Asm gibt GCC 17 mal den Fehler invalid `asm': operand number missing after %-letter aus:

    asm(    "pushadl\n\t"
    
    		"movl $0, %eax\n\t"
    		"cpuid\n\t"
                    "movl %eax, $_ea\n\t"
    
                    "mov %bl, $_vid[0]\n\t"
                    "movb %bh, $_vid[1]\n\t"
                    "roll $16, %ebx\n\t"
                    "movb %bl, $_vid[2]\n\t"
                    "movb %bh, $_vid[3]\n\t"
    
                    "movb %dl, $_vid[4]\n\t"
                    "movb %dh, $_vid[5]\n\t"
                    "roll $16, %edx\n\t"
                    "movb %dl, $_vid[6]\n\t"
                    "movb %dh, $_vid[7]\n\t"
    
                    "movb %cl, $_vid[8]\n\t"
                    "movb %ch, $_vid[9]\n\t"
                    "roll $16, %ecx\n\t"
                    "movb %cl, $_vid[10]\n\t"
                    "movb %ch, $_vid[11]\n\t"
    
                    "movb $0, $_vid[12]\n\t"
    
    		"popadl\n\t"
    
    		: /*none*/
    		: /*none*/
    		: "memory" );
    

    Wo liegt der Fehler?

    PS: das $_vid[...] bezieht sich auf char vid[13];.



  • Mal versucht, die Register mit nem doppeltem % anzusteuern? 🙄 (sobald die erweiterte inline-asm-Syntax benutzt ist das notwendig)


Anmelden zum Antworten