Din7
@Din7
Пытаюсь программировать, CGmaster - ломастер

Почему не срабатывает asm("rdtsc\n":"=a"(start.t32.th), "=d"(start.t32.tl))?

Всем привет! :)
Есть такая вот строчка кода (пытаюсь замерить тактовую частоту).
asm("rdtsc\n":"=a"(start.t32.th), "=d"(start.t32.tl));

Студии и GCC не нравится двоеточие. В чем я ошиблась?
  • Вопрос задан
  • 317 просмотров
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Студии и GCC не нравится двоеточие.

Студия (MSVS) вроде и не понимает такой формат.
А моему gcc всё нравится, и код получается правильный:
$ cat rdtsc.c
void f(unsigned long *low, unsigned long *high)
{
        asm("rdtsc\n":"=a"(*low), "=d"(*high));
}
$ gcc -O2 -S -W -Wall rdtsc.c
$ cat rdtsc.s
        .file   "rdtsc.c"
        .text
        .p2align 4,,15
        .globl  f
        .type   f, @function
f:
.LFB0:
        .cfi_startproc
#APP
# 3 "rdtsc.c" 1
        rdtsc

# 0 "" 2
#NO_APP
        movq    %rax, (%rdi)
        movq    %rdx, (%rsi)
        ret
        .cfi_endproc
.LFE0:
        .size   f, .-f
        .ident  "GCC: (GNU) 4.7.2 20121109 (Red Hat 4.7.2-8)"
        .section        .note.GNU-stack,"",@progbits


В чем я ошиблась?

В том, что не привела компилируемый код и сообщение об ошибке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы