【问题标题】:NEON Assembly manual / tutorial with GNU assembler [closed]使用 GNU 汇编器的 NEON 组装手册/教程 [关闭]
【发布时间】:2011-06-20 18:59:07
【问题描述】:

是否有任何资源可以涵盖将 NEON 汇编与 GNU 汇编器一起使用的语法?我读过该语法与使用 RVCT 汇编器的语法不同,但这是我唯一能找到的文档。有什么好的资源可以帮助我入门吗?

【问题讨论】:

    标签: assembly arm neon


    【解决方案1】:

    NEON 语法除了一个小细节外是相同的:对齐的加载/存储在 ARM 中使用 @ ,在 GAS 中使用 ,:。这是因为@是 GAS 中的注释符号。

    手臂:

     vld1.32         {d0-d3},   [r1@128]!
     vld1.32         {d16-d19}, [r1@128]
    

    气体:

     vld1.32         {d0-d3},   [r1,:128]!
     vld1.32         {d16-d19}, [r1,:128]
    

    【讨论】:

    • 难道你也必须使用所有大写字母是 ARM,例如VLD1.32?
    • 不,两个汇编程序都不区分大小写。但是,至少 ARM 汇编器不支持大小写混合:“指令助记符、指令和符号寄存器名称可以大写或小写,但不能混合。”
    【解决方案2】:

    我在http://www.shervinemami.info/armAssembly.html写了一些关于 GCC 的 ARM + NEON 汇编代码的信息(包括一个示例 NEON 函数实现)

    【讨论】:

    • 谢谢!我以前找到过你的教程,非常有帮助!
    【解决方案3】:

    从 GAS 开始时,不能自我解释的一件事是定义符号的方式。它在 ARM 汇编器中的工作方式不适用于 GAS。

    但在 GAS 中,您可以只使用 #define 为某些寄存器创建符号。比如……

    #define MyLoopCounter r0

    #define MyLoopInc #32

    这样……

    add MyLoopCounter,MyLoopCounter,MyLoopInc

    一样

    add r0,r0,#32

    否则我发现几乎所有其他内容都相同,当然还有已经回答的对齐差异。

    【讨论】:

    • 谢谢。仅供参考,由四个空格缩进的所有内容都被格式化为代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多