我正在做一些跨平台的工作,将代码从 Linux 移植到 Win32,但是当涉及到一些汇编代码时,我无法让它工作。 此代码在 Linux gcc 中正常编译,但在 VS2008 --win32 中无法运行。
下面是我的一些代码。想用VS2008 --win32平台编译需要怎么做:
static inline void spin_wait(int n)
{
int tmp = n;
while(tmp > 0) { tmp--; asm("" ::: "memory", "cc"); }
}
__asm__ __volatile__(
"xorq %%rdx, %%rdx \n"
"xorq %%rax, %%rax \n"
"incq %%rdx \n"
"lock cmpxchgq %%rdx, (%1) \n"
"decq %%rax \n"
: "=a" (not_set) : "r" (n) : "%rdx");
最佳答案
如果您的问题是关于内联汇编的使用,您仍然可以在 Visual Studio 中使用它 (MSDN link),当然您可能需要针对平台进行调整。
例如:
__asm {
mov al, 2
mov dx, 0xD007
out dx, al
}
关于c++ - 如何在 C++ 和 Visual Studio 2008 中使用 asm 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9602030/