我試圖讓一些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