gpt4 book ai didi

c++ - 如何检测 Visual C++ 中的 rdtscp 支持?

转载 作者:行者123 更新时间:2023-11-30 01:52:06 27 4
gpt4 key购买 nike

我有一段代码在 MSVC 2012 上运行:

#include <windows.h>
#include <intrin.h>

UINT64 gettime() {
try {
unsigned int ui;
return __rdtscp(&ui);
}
catch (...) {
return __rdtsc();
}
}

我试图使用 __rdtscp() 来获取时间戳;但是,在不支持 __rdtscp() 的平台上,我想改用 __rdtsc() 。

上面的代码不起作用;如果不支持 __rdtscp()(在某些虚拟机上),程序就会崩溃。那么有什么方法可以检测 __rdtscp() 是否受支持,但又不会导致程序崩溃?

最佳答案

来自 rdtscp 的 MSDN:

要确定对该指令的硬件支持,请使用 InfoType=0x80000001 调用 __cpuid 内部函数并检查 CPUInfo[3] (EDX) 的第 27 位。如果该指令被支持,则该位为 1,否则为 0。

关于c++ - 如何检测 Visual C++ 中的 rdtscp 支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25149358/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com