Я выполняю учебное задание для измерения времени доступа к памяти на моей машине.
Для определения тактов на наших машинах мы получили следующий фрагмент кода C:
static inline void getcyclecount(uint64_t* cycles)
{
__asm __volatile(
"cpuid # force all previous instruction to complete\n\t"
"rdtsc # TSC -> edx:eax \n\t"
"movl %%edx, 4(0) # store edx\n\t"
"movl %%eax, 0(0) # store eax\n\t"
: : "r"(cycles) : "eax", "ebx", "ecx", "edx");
}
Однако, когда я пытаюсь скомпилировать это (XCode 4, используя «Apple LLVM Compiler 2.1»), это дважды приводит к ошибке «Неожиданный токен в операнде памяти» в «\ t» rdtsc соответственно. первая строка инструкции movl.
Я знаю базовый ассемблер, но понятия не имею о формате встроенного ассемблера C.
Кто-нибудь из вас знает, в чем может быть проблема с этим кодом?
Спасибо!