如何解释 aarch64 程序集中的指令 `mov v2.2d[0],x14`?

How do I interpret the instruction `mov v2.2d[0],x14` in aarch64 assembly?

我已经 运行 进入汇编程序的这一行:

mov v2.2d[0],x14

我很难理解它的作用。

它似乎是一个 NEON instruction 但我无法理解它在做什么,也无法理解如何让 clang 编译它。这条指令在做什么?

来自the manual

C7.2.201 MOV (from general)

[...] This instruction can insert data into individual elements within a SIMD&FP register without clearing the remaining bits to zero.

它的形式是MOV <Vd>.<Ts>[<index>], <R><n>,其中<Ts>BHSD之一。
所以您正在寻找的解决方案是:

mov v2.d[0], x14

向量寄存器有点奇怪,因为有些指令需要在元素选择器前面有一个数字来确定它应该用作 64 位还是 128 位向量,而在其他指令中这是暗示的因此元素选择器前面没有数字。

GCC 允许在任何上下文中指定数字这一事实是 non-standard 扩展。