gpt4 book ai didi

android - 出现错误 : inconsistent operand constraints in an 'asm' while porting my c++ code from linux to android

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:25 25 4
gpt4 key购买 nike

我的 C++ 代码在我的 Linux x86 机器上运行良好,但在将相同的代码移植到运行相同 x86 架构的 Android 后,我收到错误:“asm”中的操作数约束不一致。

在我的android.mk文件中有两个源文件,一个是.cpp文件,另一个是.asm文件。我认为 .asm 文件没有被编译,因为如果我从 android.mk 中删除它,我仍然会得到相同的错误。我在 .cpp 文件上遇到错误,如下所示:

for(int reg = 0; reg <= max; reg++) {
asm ("cpuid"
: "=a" (eax),
"=b" (ebx),
"=c" (ecx),
"=d" (edx)
: "a" (reg), getting error on this line.
"c" (0));

如果我尝试使用 nasm 单独编译 .asm 文件,它会成功编译,但在 Linux 和 android 中都不能使用汇编程序。

这个问题有什么解决办法吗?

最佳答案

Android 通常在 ARM 架构上运行,我会冒险猜测您的 Linux 正在 x86/AMD64 上运行,因为您没有指定这一点。汇编代码(几乎肯定是在 .asm 文件中)在不同体系结构之间不可移植。

您需要将 .asm 文件的内容替换为可以在 ARM 上运行的代码。如果删除该文件仍然出现相同的错误,请在 C++ 源文件中查找任何内联汇编代码。错误消息(在发布问题时应始终完整且准确地复制粘贴)应指定导致错误的文件和行号。

关于android - 出现错误 : inconsistent operand constraints in an 'asm' while porting my c++ code from linux to android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23289255/

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