【问题标题】:GCC inline ASM with variable带有变量的 GCC 内联 ASM
【发布时间】:2015-02-19 21:37:44
【问题描述】:

我正在尝试在我的 C++ 源代码中使用以下 ASM 内联代码,为 Visual Studio 提供:

__asm {
mov ecx,target
}

其中 target 是一个 void* 指针。我不知道如何将其转换为与 GCC 兼容的代码。 我知道 GCC 使用如下合成器:

asm (".intel_syntax noprefix");    
asm ("mov ecx,target");    

但显然在这种情况下变量存在问题。那么,任何人都可以向我解释如何使用 GCC for Windows 使用带有内联 ASM 的指针?

感谢您的帮助。

【问题讨论】:

标签: c++ gcc inline-assembly intel-syntax


【解决方案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 寄存器中存在的值相同。

p $ecx

gdb 中的命令

> retval = 0  
> retval = -72537468

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2020-02-17
    • 1970-01-01
    • 2014-12-21
    相关资源
    最近更新 更多