如何在为 ARM 构建 libmfx 时解决 "impossible constraint in asm" 的问题?
How to solve the problem with "impossible constraint in asm" while building libmfx for ARM?
我有问题。我正在尝试从源代码为 ARM v7-a 处理器编译 libmfx。但是当我启动“make”时出现错误:
源码在src/mfx_critical_section_linux.cpp:
mfxU32 mfxInterlockedCas32(mfxCriticalSection *pCSection, mfxU32 value_to_exchange, mfxU32 value_to_compare)
{
mfxU32 previous_value;
asm volatile ("lock; cmpxchgl %1,%2"
: "=a" (previous_value)
: "r" (value_to_exchange), "m" (*pCSection), "0" (value_to_compare)
: "memory", "cc");
return previous_value;
}
为什么约束是不可能的?我应该怎么做才能解决这个问题?
lock; cmpxchgl
是 x86 汇编代码。真的不足为奇,因为 libmfx 是一个 Intel 库(例如,libmfx 是由制造 x86 芯片的公司编写的)。它确实不是为在 ARM 上编译而设计的。
我有问题。我正在尝试从源代码为 ARM v7-a 处理器编译 libmfx。但是当我启动“make”时出现错误:
源码在src/mfx_critical_section_linux.cpp:
mfxU32 mfxInterlockedCas32(mfxCriticalSection *pCSection, mfxU32 value_to_exchange, mfxU32 value_to_compare)
{
mfxU32 previous_value;
asm volatile ("lock; cmpxchgl %1,%2"
: "=a" (previous_value)
: "r" (value_to_exchange), "m" (*pCSection), "0" (value_to_compare)
: "memory", "cc");
return previous_value;
}
为什么约束是不可能的?我应该怎么做才能解决这个问题?
lock; cmpxchgl
是 x86 汇编代码。真的不足为奇,因为 libmfx 是一个 Intel 库(例如,libmfx 是由制造 x86 芯片的公司编写的)。它确实不是为在 ARM 上编译而设计的。