vst/vld命令中的ARM组件语法



我正在使用arm-none-linux-gnueabi-gcc工具链来构建一个项目,该项目涉及将某些汇编文件链接在一起。

汇编文件之一包含多个命令:

vst1.64 {q4}, [r0:64]        @offload A[0..1][4]

据我所知,根据ARM汇编器的参考。但是,当我想构建该项目时,给出以下消息:

Error: ']' expected -- `vst1.64 {q4},[r0:64]'

这意味着存在某种语法错误。修改线后,由于下面的错误已消失:

vst1.64 {q4}, [r0,:64]        @offload A[0..1][4]

我想知道这种修改是否导致该线路做一些不同的事情。还有其他方法可以解决此错误吗?

您的修复似乎正确。正确对齐的正确语法确实包含逗号,但是一些版本的binutils也支持省略逗号。两者之间的含义没有差异,只是解析器的不同严格性。两者都组装成完全相同的指令。

gnu binutils 2.25和2.30似乎接受了两种形式。

$ cat test.s
        .text
        .syntax unified
        vst1.64 {q4}, [r0:64]
        vst1.64 {q4}, [r0,:64]
$ arm-linux-gnueabihf-as -c test.s -o test.o -mfpu=neon
$ arm-linux-gnueabihf-objdump -d test.o
test.o:     file format elf32-littlearm

Disassembly of section .text:
00000000 <.text>:
   0:   f4008adf        vst1.64 {d8-d9}, [r0 :64]
   4:   f4008adf        vst1.64 {d8-d9}, [r0 :64]

最新更新