首先,请对不起,我的英语不太好...... 我正在尝试为stm32f746g-disco写一些项目。我正在使用arm-none-eabi工具包。完整的源代码位于http://github.com/Andrew-Bezzubtsev/stm-glib.git。当我试图构建它时:
./set_toolchain.sh
cmake ./
make
我收到下一个错误:错误:没有这样的说明:
`rbit %eax,%eax'
但是发生错误的代码片段是:
__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
{
uint32_t result;
#if (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300)
__ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
#else
int32_t s = 4 /*sizeof(v)*/ * 8 - 1; // extra shift needed at end
result = value; // r will be reversed bits of v; first get LSB of v
for (value >>= 1; value; value >>= 1)
{
result <<= 1;
result |= value & 1;
s--;
}
result <<= s; // shift when v's highest bits are zero
#endif
return(result);
}
请帮助我。
答案 0 :(得分:3)
(由于低代表仍无法使用评论,请尽可能将其转换为评论)
eax - 是一个来自intel(x86)平台的寄存器,ARM上没有这样的寄存器。
你需要找出为什么“rbit%0,%1”变成“rbit%eax,%eax”
UPD .: 正如@Notlikethat指出的那样 - 您需要正确设置交叉编译环境,因为目前您正在编译x86而不是ARM。