【发布时间】:2014-08-02 04:38:17
【问题描述】:
我正在尝试使用以下 cod 读取 cpuid 信息,但它不起作用。我正在使用 Visual Studio 2010:
#include "stdafx.h"
#include <stdio.h>
int main()
{
int a, b;
for (a = 0; a < 5; a++)
{
__asm__("cpuid"
:"=a"(b) // EAX into b (output)
:"0"(a) // a into EAX (input)
:"%ebx","%ecx","%edx"); // clobbered registers
printf("The code %i gives %i\n", a, b);
}
return 0;
}
它是这样说的:
'project_scs.exe': Loaded 'C:\Users\rares992\Documents\Visual Studio 2010\Projects\project_scs\Debug\project_scs.exe', Symbols loaded.
'project_scs.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
'project_scs.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
'project_scs.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
'project_scs.exe': Loaded 'C:\Windows\SysWOW64\msvcp100d.dll', Symbols loaded.
'project_scs.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded.
The thread 'Win32 Thread' (0x2190) has exited with code -1073741510 (0xc000013a).
The program '[8828] project_scs.exe: Native' has exited with code -1073741510 (0xc000013a).
谁能告诉我该怎么做才能让它运行?谢谢
【问题讨论】:
-
该程序集块用于 gcc 编译器,而不是 Visual Studio。如果您需要 cpuid,请使用 intrinsic。
-
Microsoft 的内联汇编语法与 GCC 的完全不同(这就是您所拥有的)。尝试安装和使用 GCC 的 MinGW 版本(nuwen.net/mingw.html 或 tdm-gcc.tdragon.net/download)
标签: c++ visual-studio-2010 assembly cpuid