这三个功能等效吗?

问题描述

我想编写一个函数获取当前时间戳。由于直接使用__retscp(&addr)函数,因此每次必须输入一个参数。我想在.h文件中编写一个函数cutTime(),该函数每次都返回当前时间戳。由于我不想因为函数调用过程而浪费时间,因此将其定义为内联函数一个使用rdtsc,另一个使用rdtscp。 我的两个实现与直接使用__retscp(&addr)一样吗?

1.static inline uint64_t curTime() {
  uint64_t a,d;
  asm volatile ("mfence");
  asm volatile("rdtsc" : "=a"(a),"=d"(d) :: "rcx");
  a = (d<<32) | a;
  asm volatile ("mfence");
  return a;
}
2.static inline uint64_t curTime() {
  uint64_t a;
  asm volatile ("rdtscp" : "=a" (a));
  return a;
}

3.__rdtscp( & junk)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)