我正在使用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]