[英]GCC inline ASM with variable
我正在尝试在我的 C++ 源代码中使用以下 ASM 内联代码,为 Visual Studio 提供:
__asm {
mov ecx,target
}
其中 target 是一个 void* 指针。 我不知道如何将其转换为 GCC 兼容代码。 我知道 GCC 使用像这样的 synthax:
asm (".intel_syntax noprefix");
asm ("mov ecx,target");
但显然在这种情况下变量有问题。 那么,任何人都可以向我解释如何使用适用于 Windows 的 GCC 将指针与内联 ASM 一起使用?
谢谢你的帮助。
试试这个程序集,这可能会有所帮助……至少它对我有用。
#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 寄存器中存在的值相同。
p $ecx
gdb中的命令
> retval = 0
> retval = -72537468
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.