【发布时间】:2011-09-27 15:09:29
【问题描述】:
我正在做一项研究任务,以测量我机器上的内存访问时间。 为了确定我们机器上的时钟周期,我们得到了以下 C sn-p:
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”)时,它会在 rdtsc 的“\t”分别导致两次错误“内存操作数中的意外令牌”。第一个 movl 指令行。
我知道基本的汇编程序,但对 C 内联汇编程序格式一无所知。
你们中有人知道这段代码可能有什么问题吗?
谢谢!
【问题讨论】: