Inline Asm的多编译器支持(x86)

时间:2012-09-03 12:59:07

标签: c assembly x86 inline-assembly

对于内联asm代码,我使用__asm用于vc ++编译器,__asm__()asm()构造用于linux下的gcc。 (相应的intel / at& t语法)

有没有办法以通用的方式在C中为它们声明内联汇编(x86)?

P.S。同时包含两者的自动化工具也是可以接受的。

2 个答案:

答案 0 :(得分:5)

将程序集放在宏中,然后使用预处理器生成正确的代码。

#ifdef GCC
#define MY_ASM_CODE __asm() { blah blah blah}
#endif

#ifdef MSVC
#define MY_ASM_CODE __asm { blah blah blah }
#endif

int main(void)
{
  MY_ASM_CODE;
  return 0;
}

答案 1 :(得分:0)

作为另类......

我认为你使用Visual C因为它是一个Windows平台?

为什么不在Windows和Linux平台上使用gcc?

然后它是相同的源和相同的汇编格式!