- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一段代码在 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/
我很困惑 rdtscp在多核环境中单调递增。根据文档:__rdtscp , rdtscp似乎是基于处理器的指令,可以防止围绕调用重新排序指令。 The processor monotonically
这个问题在这里已经有了答案: Which inline assembly code is correct for rdtscp? (2 个答案) 关闭 5 年前。 我正在使用 rdtscp 指令读取
一些新的 Intel 处理器同时具有 RDTSC 和 RDTSCP 指令,而大多数旧处理器只有 RDTSC 指令。 在使用 C/C++ 编写代码时,如何在编译时检测正在使用的体系结构是否具有 RDTS
免责声明:言语无法描述我对 AT&T 风格语法的厌恶程度 我遇到了一个问题,希望是由寄存器破坏引起的。如果没有,我就有一个更大的问题。 我使用的第一个版本是 static unsigned long
我正在尝试编写一个程序来测量上下文切换。我经历过这个 Intel's manual关于 rdtsc + rdtscp 指令。 现在,我想在上下文切换中使用这些时间戳指令。我的总体框架如下: // in
我有这个代码 #include #include unsigned long long rdtscp(unsigned int* aux) { // For IA32 unsign
我正在做一些 Linux 内核计时,特别是在中断处理路径中。我一直在使用 RDTSC 进行计时,但我最近了解到它不一定准确,因为指令可能会乱序发生。 然后我尝试了: RDTSC + CPUID(此处为
我正在尝试使用 rdtscp 为子程序计时。这是我的程序: ; Setting up time rdtscp ; Getting time push rax
我使用 RDTSCP 来替换 LFENCE;RDTSC 序列,并获取处理器 ID,以便我知道在线程重新调度到另一个 CPU 后何时比较 TSC 值。 为了确保我不会在太旧的计算机上运行 RDTSCP,
我有一段代码在 MSVC 2012 上运行: #include #include UINT64 gettime() { try { unsigned int ui; retu
假设我们正在尝试使用 tsc 进行性能监控,并且我们希望防止指令重新排序。 这些是我们的选择: 1: rdtscp 是一个序列化调用。它可以防止围绕对 rdtscp 的调用进行重新排序。 __asm_
据我所知,相对于rdtsc和rdtscp指令,处理器中的运行时排序的主要区别在于执行是否要等到所有先前的指令都在本地执行后才能执行。 换句话说,这意味着lfence + rdtsc = rdtscp,
我是一名优秀的程序员,十分优秀!