如何解释 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>
是B
、H
、S
或D
之一。
所以您正在寻找的解决方案是:
mov v2.d[0], x14
向量寄存器有点奇怪,因为有些指令需要在元素选择器前面有一个数字来确定它应该用作 64 位还是 128 位向量,而在其他指令中这是暗示的因此元素选择器前面没有数字。
GCC 允许在任何上下文中指定数字这一事实是 non-standard 扩展。
我已经 运行 进入汇编程序的这一行:
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>
是B
、H
、S
或D
之一。
所以您正在寻找的解决方案是:
mov v2.d[0], x14
向量寄存器有点奇怪,因为有些指令需要在元素选择器前面有一个数字来确定它应该用作 64 位还是 128 位向量,而在其他指令中这是暗示的因此元素选择器前面没有数字。
GCC 允许在任何上下文中指定数字这一事实是 non-standard 扩展。