收到错误:将我的 c++ 代码从 Linux 移植到 android 时'asm'中的操作数约束不一致
Getting error: inconsistent operand constraints in an 'asm' while porting my c++ code from linux to android
我的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++源文件中查找任何内联程序集代码。错误消息(发布问题时应始终完整、准确地复制粘贴)应指定导致错误的文件和行号。
相关文章:
- 大于65535的C++数组[size]引发不一致的溢出
- 在 C++(和 C)中进行类型转换时明显不一致
- 填充上编译器生成的复制构造函数之间的不一致
- 犰狳的 print() 方法和 cout 在从 Rcpp 调用时顺序不一致
- CreateDIBSection为同一图像返回不一致的位图位值
- 在 Qml 中从 QSqlTableModel 中删除单行时视图不一致
- 模板参数推导不一致
- 声明中不一致的no是否违反ODR?
- 如何删除分支因子不一致的树,最大为 30,40
- 从 C++ 函数与 Python 函数返回的不一致值用于偏斜正态分布
- 从 C 字符串构造 std::string 与从另一个 std::string 构造 std::string 不一致
- 这种比较是否不一致(或者存在其他问题)?
- 以下可变参数模板行为是否不一致?
- 如何修复我的链表读数不一致的问题?
- 在C++17中,为什么类模板和函数模板的指针类型推导明显不一致
- void 函数中的指针参数返回不一致的值
- 如何查找导致结果不一致的代码
- 跨平台 mySQL 与字符集不一致
- 'asm'中不一致的操作数约束
- 收到错误:将我的 c++ 代码从 Linux 移植到 android 时'asm'中的操作数约束不一致