Dies ist der ursprüngliche Code:Ich brauche Hilfe Intel Inline-asm zu AT & T so Konvertieren ich es mit gcc kompilieren
#define CPU_PREFETCH(cache_line) \
{ int* address = (int*) (cache_line); \
_asm mov edx, address \
_asm prefetcht0[edx] \
}
#define CPU_GET_CYCLES(low) \
{ \
_asm rdtsc \
_asm mov dword ptr [low], eax \
}
#define CPU_SYNC \
{ \
_asm mov eax, 0 \
_asm cpuid \
}
#define CPU_CACHE_FLUSH(cache_line) \
{ int* address = (int*) (cache_line); \
_asm mov edx, address \
_asm clflush[edx] \
_asm mfence \
}
Dank Hofnarr, ich das jetzt haben:
#define CPU_PREFETCH(cache_line) \
{ \
__asm__ __volatile__ ("prefetcht0 %0" : : "m" (*(int*)cache_line)); \
}
#define CPU_GET_CYCLES(low) \
{ \
__asm__ __volatile__ ("rdtsc" : "=a" (low) : : "%edx"); \
}
#define CPU_SYNC \
{ \
__asm__ __volatile__ ("cpuid" : : : "%eax", "%ebx", "%ecx", "%edx"); \
}
#define CPU_CACHE_FLUSH(cache_line) \
{ \
__asm__ ("clflush %0; mfence" : : "m" (*(int*)cache_line)); \
}
Offensichtlich gcc mag nicht flüchtige mit Clflush. Danke an alle.
Ich versuche Slicing-By-8 mit gcc als DLL kompilieren, damit ich es in meiner VB6-App verwenden kann.
Mann, das sieht gut aus und sieht aus, als wüsstest du genau, was du machst :) Wie auch immer, bekomme ich diesen Fehler jetzt: Fehler: Operandengröße stimmt nicht überein für 'clflush ' – selyb
Ich versuchte zu klicken, dass dieser Beitrag nützlich war aber ich nicht Ich habe keinen guten Ruf – selyb