【发布时间】:2011-03-13 14:13:51
【问题描述】:
我正在尝试获取一些在 Visual Studio 2008 中运行的 c & ASM 示例代码。我认为问题不在于 VS 2005-2008 之间的差异。 This example 应该在 64 位系统上获取 CPUID。 (我尝试编译仅限 ASM 的 32 位示例也失败了)
我可以将此代码复制并粘贴到一个新项目中,但我无法构建它。我尝试了一些不同的 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
【问题讨论】:
-
我刚刚发布了一个相关的问题,但与此不完全相同(不同的方法)stackoverflow.com/questions/3216535/x86-x64-cpuid-in-c
标签: c visual-studio-2008 assembly