将GNU asm调用转换为VC++

Pri*_*nci 5 assembly visual-c++

我一直在将Linux应用程序移植到Windows平台.

这是linux代码,

 __asm__ __volatile__ ("lock; cmpxchgl %1, %2"
                      : "=a" (prev)
                      : "q" (new_value), "m" (*ptr), "0" (old_value)
                     : "memory");
Run Code Online (Sandbox Code Playgroud)

我尝试使用_asm volatile,但是我在Visual Studio 2012中收到了一个错误,说'在'opcode'中找到'内联汇编语法错误';找到'数据类型'".

我需要一些Windows等效代码.任何信息/建议请.

sne*_*rch 1

一般来说,我更喜欢外部汇编模块而不是内联汇编——它更便携(是的,便携和汇编在同一句话中使用)。nasmyasm等汇编器可用于多个平台,并且可以生成多种目标文件格式。

外部汇编模块不适合像您的代码这样真正对性能至关重要的单行代码 - 考虑使用编译器内在函数而不是内联汇编。您可能想查看便携式比较和交换