【发布时间】:2011-06-20 18:59:07
【问题描述】:
是否有任何资源可以涵盖将 NEON 汇编与 GNU 汇编器一起使用的语法?我读过该语法与使用 RVCT 汇编器的语法不同,但这是我唯一能找到的文档。有什么好的资源可以帮助我入门吗?
【问题讨论】:
是否有任何资源可以涵盖将 NEON 汇编与 GNU 汇编器一起使用的语法?我读过该语法与使用 RVCT 汇编器的语法不同,但这是我唯一能找到的文档。有什么好的资源可以帮助我入门吗?
【问题讨论】:
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]
【讨论】:
我在http://www.shervinemami.info/armAssembly.html写了一些关于 GCC 的 ARM + NEON 汇编代码的信息(包括一个示例 NEON 函数实现)
【讨论】:
从 GAS 开始时,不能自我解释的一件事是定义符号的方式。它在 ARM 汇编器中的工作方式不适用于 GAS。
但在 GAS 中,您可以只使用 #define 为某些寄存器创建符号。比如……
#define MyLoopCounter r0
#define MyLoopInc #32
这样……
add MyLoopCounter,MyLoopCounter,MyLoopInc
和
一样add r0,r0,#32
否则我发现几乎所有其他内容都相同,当然还有已经回答的对齐差异。
【讨论】: