C++ 如何在Visual Studio中编译汇编代码?

C++ 如何在Visual Studio中编译汇编代码?,c++,C++,我无法在Visual Studio 2010中编译以下程序集代码: asm( "mov $950706376,%%ecx \n\t" "mul %%ecx \n\t" "mov $2147483647,%%ecx \n\t" "div %%ecx " : "=d" (rn_seed) : "a" (rn_seed) : "%ecx" ); 我收到以下错误消息:语法错误:在“:”之前缺少“)” 有人

我无法在Visual Studio 2010中编译以下程序集代码:

asm( "mov $950706376,%%ecx  \n\t"
     "mul %%ecx             \n\t"
     "mov $2147483647,%%ecx \n\t"
     "div %%ecx                 "
     : "=d" (rn_seed) : "a" (rn_seed) : "%ecx" );
我收到以下错误消息:语法错误:在“:”之前缺少“)”


有人知道如何编译它吗?谢谢。

Microsoft编译器中内联汇编程序的语法与您正在使用的语法不同

请看这篇关于内联汇编程序的文档:

    • 类似这样的东西

      __asm
      {
          mov 0x950706376, ecx;
          mul ecx;
          mov 0x2147483647, ecx;
          div ecx;
      }
      

      看起来像是语法问题。请编辑您的问题并包括您收到的错误消息,它们有点重要。@aldanux:谢谢您改进格式。在“…Visual Studio 2010:”之后,您是如何进行换行的?我尝试过使用双空格,就像它在降价帮助中所说的那样,但没有成功。对不起,我对StackOverflow还很陌生。@SpeedPacer-double-enter:)谢谢。你知道上面的语法用于什么编译器吗?内联汇编程序MSDN页面上最值得注意的一句话是:“ARM和x64处理器不支持内联汇编。”参数的顺序与此相反:英特尔语法的目标在左边,而AT&T语法(如问题中所用)的目标在右边。第一条指令应改为
      mov ecx,0x950706376