Pat*_*ick 3 c assembly llvm xcode4
我正在做一项研究工作,以测量我机器上的内存访问时间.为了确定我们机器上的时钟周期,我们获得了以下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");
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译它(XCode 4,使用"Apple LLVM编译器2.1")时,它会在rdtsc resp的"\ t"错误"内存操作数中的意外令牌"中产生两次.第一个movl指令行.
我知道基本的汇编程序,但对C内联汇编程序格式没有任何线索.
你们中的任何人都知道这段代码会出现什么问题吗?
谢谢!
假设这是GCC内联汇编语法,你%在内存操作数中缺少一个:
__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");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2364 次 |
| 最近记录: |