繁体   English   中英

ARM GCC内联汇编

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM