我试图在我的C ++源代码中使用以下ASM内联代码,为Visual Studio提供:
__asm {
mov ecx,target
}
其中target是void *指针。我不知道如何将其转换为与GCC兼容的代码。 我知道GCC使用的是synthax:
asm (".intel_syntax noprefix");
asm ("mov ecx,target");
但显然在这种情况下变量存在问题。那么,任何人都可以解释我如何使用GCC for Windows的内联ASM指针?
感谢您的帮助。
答案 0 :(得分:1)
试试这个装配可能会有所帮助....至少它对我有用。
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *arg[])
{
int retval;
printf ( " retval = %d \n", retval );
asm volatile(
"movl %%ecx , %0\n\t"
:"=r" (retval));
printf ( "retval = %d \n", retval );
return 0;
}
为我打印以下值...我试过它调试第二个值与ecx寄存器中的值相同。
gdb中的p $ ecx
命令
> retval = 0
> retval = -72537468