Assembly ARM NEON:加载64位int常量

Assembly ARM NEON:加载64位int常量,assembly,arm,simd,neon,Assembly,Arm,Simd,Neon,我想使用ARM NEON伪指令VLDR将64位无符号整数常量从文字池加载到寄存器D0中: VLDR.U64 D0, =0x50A28BE600000000 如果我编译,汇编程序会说: gcc -g -Wall -mfpu=neon -mcpu=cortex-a7 -c ripemd160NEON.s -o ripemd160NEON.o ripemd160NEON.s: Assembler messages: ripemd160NEON.s:146: Error: floating point

我想使用ARM NEON伪指令VLDR将64位无符号整数常量从文字池加载到寄存器D0中:

VLDR.U64 D0, =0x50A28BE600000000
如果我编译,汇编程序会说:

gcc -g -Wall -mfpu=neon -mcpu=cortex-a7 -c ripemd160NEON.s -o ripemd160NEON.o
ripemd160NEON.s: Assembler messages:
ripemd160NEON.s:146: Error: floating point number invalid

为什么十六进制值被认为是一个浮点数?

您使用的是哪个版本的GNU汇编程序?
as-v
说“GNU汇编程序版本2.25(arm linux gnueabihf)使用BFD版本(GNU Binutils for Raspbian)2.25”不使用Binutils 2.27进行复制(按预期汇编为64位文字负载)。另一方面,2.24给出了更不具体的“错误:无效常量--`vldr.u64 D0,=0x50A28BE6000000';奇怪的是,它会接受一个32位常量,例如
vldr.u64 D0,=0x50A28BE6
,但会悄悄地将其错误组合到
vldr D0,[r0]
。根据我的经验,为什么GAS认为任何东西都是任何东西对每个人来说都是一个谜。@notlike that,我以前调查过这个问题,发现它是Debian分支的一个狡猾的后门。IIRC,2.24的fsf版本拒绝了语法,FSF2.25正确无误。您使用的是哪个版本的GNU汇编程序?
as-v
表示“GNU汇编程序版本2.25(arm linux gnueabihf)使用BFD版本(GNU Binutils用于Raspbian)2.25”不使用Binutils 2.27进行复制(按照预期汇编为64位文字负载)。另一方面,2.24给出了更不具体的“错误:无效常量--`vldr.u64 D0,=0x50A28BE6000000';奇怪的是,它会接受一个32位常量,例如
vldr.u64 D0,=0x50A28BE6
,但会悄悄地将其错误组合到
vldr D0,[r0]
。根据我的经验,为什么GAS认为任何东西都是任何东西对每个人来说都是一个谜。@notlike that,我以前调查过这个问题,发现它是Debian分支的一个狡猾的后门。IIRC,2.24版的fsf拒绝了语法,而FSF2.25正确无误。