C++ 如何在Visual Studio中编译汇编代码?
我无法在Visual Studio 2010中编译以下程序集代码: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" ); 我收到以下错误消息:语法错误:在“:”之前缺少“)” 有人
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
。