gpt4 book ai didi

gcc - 错误 : invalid 'asm' : operand number missing after %-letter when using inline assembly with GCC

转载 作者:行者123 更新时间:2023-12-03 22:58:28 25 4
gpt4 key购买 nike

我正在尝试将 MS 的简单汇编代码转换为与 gcc 一起使用,我尝试转换的 MS 程序集就在下面。我有两个 int变量,number_return :

mov eax, number
neg eax
return, eax

而且,我试过这个:
asm("movl %eax, %0" :: "g" ( number));
asm("neg %eax");
asm("movl %0, %%eax" : "=g" ( return ));

但是,编译器给了我这个错误:

main.c:17:9: error: invalid 'asm': operand number missing after %-letter



错误在哪里,我该如何解决这个错误?
谢谢

最佳答案

你不能这样做,因为你在没有告诉编译器的情况下覆盖了寄存器。另外,%是一个特殊字符,类似于printf。

最好将所有说明放在一起 asm否则编译器可能会在两者之间做一些意想不到的事情。

试试这个:

asm("movl %%eax, %1\n\t"
"neg %%eax\n\t"
"movl %0, %%eax" : "=g" ( _return ) : "g" ( number) : "eax");

不过,可能有更好的方法:
asm("neg %0": "=a" ( _return )  : "a" ( number));

我不知道为什么你不能只做(在 C 中):
_return = -number;

关于gcc - 错误 : invalid 'asm' : operand number missing after %-letter when using inline assembly with GCC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15113768/

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