我试图让一些C & ASM示例代码,我发现在运行Visual Studio 2008中,我不认为这个问题是VS 2005 - 2008年之间的差异。 This example应该在64位系统上获得CPUID。 (我尝试获得ASM-仅32位的例子编译太失败了)获得64位CPUID示例代码编译VS2008
我可以复制和将此代码粘贴到一个新的项目,但我一直没能建立它。我尝试了几个不同的VS项目模板,但没有成功。我相信我一直按照说明操作。有人可以通过项目模板和项目设置逐步提供在Visual Studio 2008中的运行吗?
有一两件事我注意到的是,虽然我可以使环境是64位的,我似乎无法针对x64的这个项目 - 添加新平台的唯一选项是移动平台。我不得不在命令行选项中手动定义_M_X64,我怀疑我不应该这么做。
不直接调试,但只为您的信息 - 错误,据我得到的,如下:
1> Assembling: .\cpuid64.asm
1>.\cpuid64.asm(4) : error A2013:.MODEL must precede this directive
1>.\cpuid64.asm(5) : error A2034:must be in segment block
1>.\cpuid64.asm(7) : error A2034:must be in segment block : cpuid64
1>.\cpuid64.asm(11) : error A2034:must be in segment block
1>.\cpuid64.asm(12) : error A2008:syntax error : .
1>.\cpuid64.asm(13) : error A2034:must be in segment block
1>.\cpuid64.asm(14) : error A2008:syntax error : .
1>.\cpuid64.asm(15) : error A2008:syntax error : .
1>.\cpuid64.asm(17) : error A2034:must be in segment block
1>.\cpuid64.asm(18) : error A2085:instruction or register not accepted in current CPU mode
1>.\cpuid64.asm(19) : error A2085:instruction or register not accepted in current CPU mode
1>.\cpuid64.asm(20) : error A2085:instruction or register not accepted in current CPU mode
1>.\cpuid64.asm(21) : error A2085:instruction or register not accepted in current CPU mode
1>.\cpuid64.asm(22) : error A2085:instruction or register not accepted in current CPU mode
1>.\cpuid64.asm(23) : error A2085:instruction or register not accepted in current CPU mode
1>.\cpuid64.asm(24) : error A2085:instruction or register not accepted in current CPU mode
1>.\cpuid64.asm(26) : error A2034:must be in segment block
1>.\cpuid64.asm(27) : error A2034:must be in segment block
1>.\cpuid64.asm(29) : error A2034:must be in segment block
1>.\cpuid64.asm(30) : error A2034:must be in segment block
1>.\cpuid64.asm(31) : fatal error A1010:unmatched block nesting : cpuid64
我刚刚发布了一个相关的问题,但不完全一样,这(不同的方法)http://stackoverflow.com/questions/3216535/x86-x64-cpuid-in-c – 2010-07-09 21:01:07