我有一个小程序。它应该确定VMA(虚拟内存地址)的宽度。它与gcc / mingw一起工作正常,但是现在我需要等同于使用msvc。 这是代码
#include <stdio.h>
int main(int argc, char *argv[])
{
unsigned long ret = 0x80000000;
__asm __volatile("cpuid\n" : "+a" (ret));
if (ret >= 0x80000008) {
ret = 0x80000008;
__asm __volatile("cpuid\n" : "+a" (ret));
printf("%lu", (ret >> 8) & 0xff);
} else {
return (1);
}
return (0);
}
Visual Studio 2008打印:
.\main.c(7) : error C2400: inline assembler syntax error in 'opcode'; found '('
.\main.c(8) : error C2143: syntax error : missing ';' before ':'
.\main.c(11) : error C2400: inline assembler syntax error in 'opcode'; found '('
.\main.c(12) : error C2143: syntax error : missing ';' before ':'
有人可以提示如何移植此代码吗?