gpt4 book ai didi

c++ - 带变量的 GCC 内联 ASM

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:35 26 4
gpt4 key购买 nike

我正在尝试在我的 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

关于c++ - 带变量的 GCC 内联 ASM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27591658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com