2017-10-09 3 views
0

Quelqu'un peut-il m'aider à identifier la raison de l'erreur du compilateur ci-dessous?Raison de l'erreur "impossible contrainte dans 'asm" dans le code ci-dessous

".. \ TestRT \ TDP \ PPCGNU \ lib \ custom.h: 428: erreur: contrainte impossible « asm »"

code: enter image description here

Merci à l'avance!

+0

Quelle est votre architecture cible? –

+0

Bonjour, Ce morceau de code pour les activités de couverture en utilisant RTRT. –

+0

Salut weimer, TDP est ** cpcgnu **, la compilation en utilisant cygwin gcc sur le PC Windows 7 –

Répondre

0

Je pense que la documentation répond à cette question. Vous avez probablement du code x86 que vous construisez pour x86-64. A est valide pour x86, mais pas pour x86-64. GCC documentation explique comment remplacer A par un pour x86-64:

«Ce n'est pas correct sur x86-64 car il attribuerait tique soit hache ou dx Vous devez plutôt utiliser la variante suivante: »

unsigned long long rdtsc (void) 
{ 
    unsigned int tickl, tickh; 
    __asm__ __volatile__("rdtsc":"=a"(tickl),"=d"(tickh)); 
    return ((unsigned long long)tickh << 32)|tickl; 
}