GCC / MSVC内联汇编移植

时间:2014-08-06 07:39:38

标签: c visual-c++ gcc

我有一个小程序。它应该确定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 ':'

有人可以提示如何移植此代码吗?

0 个答案:

没有答案