使用GNU汇编程序的NEON汇编手册/教程

时间:2011-06-20 18:59:07

标签: assembly arm neon

是否有任何资源可以涵盖在GNU汇编程序中使用NEON Assembly的语法?我读过这个语法与使用RVCT汇编程序的语法不同,但这是我唯一可以找到文档的东西。有什么好的资源可以让我开始吗?

3 个答案:

答案 0 :(得分:4)

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

ARM:

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

GAS:

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

答案 1 :(得分:2)

我在http://www.shervinemami.info/armAssembly.html

为GCC写了一些关于ARM + NEON汇编代码的信息(包括一个示例NEON函数实现)

答案 2 :(得分:1)

从GAS开始时,有一点不自我解释的是定义符号的方法。它在ARM汇编程序中的工作方式不适用于GAS。

但是在GAS中你可以使用#define为某些寄存器制作符号。比如...

#define MyLoopCounter r0

#define MyLoopInc #32

这样......

add MyLoopCounter,MyLoopCounter,MyLoopInc

相同

add r0,r0,#32

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