这个x86内联汇编在做什么?

MK.*_*MK. 8 c x86 assembly inline-assembly

我遇到了这段代码,需要了解它在做什么.它似乎只是宣布两个字节,然后什么都不做......

uint64_t x;
__asm__ __volatile__ (".byte 0x0f, 0x31" : "=A" (x));
Run Code Online (Sandbox Code Playgroud)

谢谢!

Chr*_*odd 11

这将直接在代码流中生成两个字节(0F 31).这是一条RDTSC指令,它将时间戳计数器读入EDX:EAX,然后通过输出约束"= A"(x)将其复制到变量'x'