我目前对VirtualBox如何模拟rdtsc的理解是,在虚拟模式下,对rdtsc的任何调用都将被预定的结果所抵消,该结果是在另一个寄存器中设置的值。当虚拟机启动时,这个值将是主机上的rdtsc。这种策略的一个优点是,rdtsc将以预期的方式随着时钟时间的增加而前进,但缺点是进程可能认为rdtsc比预期的时间更长。例如,在下面这样的简单代码中:y = rdtsc();print z
在客户上执行时,z可能比预期的要大,
我试着比较一下c++11 std::chrono::high_resolution_clock测量的时间和下面的rdtsc_clock时钟。从rdtsc_clock,我得到134,15,91等,为什么他们的结果看起来如此不同?从我的直觉来看,我相信rdtsc_clock给出了准确的结果,对吗?template<std::intmax_t clock_freq> typedef unsigned long long rep;typedef std: