[英]ARM GCC inline assembly
我正在尝试以下方法:
int main()
{
unsigned int result = 0;
unsigned int op1 = 10, op2 = 20;
asm volatile ("uadd8 %0, %1, %2" :
"=r" (result) :
"r" (op1), "r" (op2) );
}
我想针对Cortex A9进行编译,我正在使用arm GNU GCC工具链。
但我不断收到此错误:
arm-none-linux-gnueabi-gcc test_2.c
Assembler messages:
Error: selected processor does not support ARM mode `uadd8 r4,r3,r2'
我尝试通过添加.code 16
来强制进入拇指模式,但没有运气。
这是什么问题?
原因是编译器中的默认ARM体系结构未实现该指令。 对于架构ARMv6T2和ARMv7,在Thumb模式下支持uadd8
对于ARMv6和ARMv7,在ARM模式下支持uadd8
。 因此,您需要将适当的-march=
选项传递给gcc
。 例如:
-march=armv6
-march=armv6t2 -mthumb
-march=armv7-a
-march=armv7-a -marm
您可以使用以下命令检查编译的默认体系结构(或由选项设置):
arm-elf-gcc -E -dM -x c /dev/null | grep ARM_ARCH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.