繁体   English   中英

带变量的 GCC 内联 ASM

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM