CPUID 在 x64 平台与 Microsoft Visual Studio* .NET 2005 上的应用
针对 Visual Studio .NET* 2005中的x64平台,程序员不能像对32位代码那样使用内联汇编代码(inline assembly)。这迫使他们或求助使用内联函数(intrinsics)的 C/C++ 代码,或不嫌麻烦地创建函数的 64 位 MASM(.asm)版本。不幸的是,VS .Net 2005 在实施 CPUID(__cpuid)的内联函数时,只能识别 eax 寄存器中的输入自变量,而不能识别 ecx 中最近定义的输入,这些输入用于有关高速缓存参数和某些多核特性的查询。这样,CPUID 指令的充分使用就需要一份 64 位 .asm 清单。
以下代码示例显示了如何与面向 64 位(x64)平台的 VS .Net 2005 配合使用 PUID 和 RDTSC 指令。CPUID 指令被广泛用于获取系统 CPU 的详细信息,而 RDTSC 则被用来读取 CPU 用于计时和性能测量目的的内部时间戳计数器。RDTSC 内联数据(__rdtsc)的确可实现预期的功用,从而替代内联汇编代码。
http://www.intel.com/cd/ids/developer/apac/zho/recent/260174.htm