我正在尝试构建VS2010 CRT库的某些功能的略微修改版本,除了尝试访问可能包含指令集架构版本(ISA)的全局变量的部分外,一切都很好:
if (__isa_available > __ISA_AVAILABLE_SSE2)
{
// ...
}
else if (__isa_available == __ISA_AVAILABLE_SSE2)
{
// ...
}
我应该在程序集文件中找到的值
__ISA_AVAILABLE_X86 equ 0
__ISA_AVAILABLE_SSE2 equ 1
__ISA_AVAILABLE_SSE42 equ 2
__ISA_AVAILABLE_AVX equ 3
无法找到__isa_available
分配值的方式和位置(我在所有目录中尝试过查找文件......)
MSDN引用CPUID示例来确定指令集。问题是它使用__asm
块,而我的x64版本中不允许使用这些块。
有谁知道如何快速将正确的值分配给__isa_available
?
答案 0 :(得分:3)
微软决定停止对内联汇编的支持。但他们推出了一种新格式。您可以使用新格式here(带示例)找到有关CPUID的更多信息。
内在函数优于内联汇编的优势在于它们兼容x86和x64而无需额外代码,并且更易于使用。
答案 1 :(得分:1)