VLDR,VSTR

扩展寄存器加载和存储。

语法

VLDR{cond}{.size} Fd, [Rn{, #offset}]
VSTR{cond}{.size} Fd, [Rn{, #offset}]
VLDR{cond}{.size} Fd, label
VSTR{cond}{.size} Fd, label

其中:

cond

是一个可选的条件代码(请参阅条件代码)。

size

是一个可选的数据大小说明符。 如果 Fd 是单精度 VFP 寄存器,则必须为 32;否则必须为 64。

Fd

是要加载或保存的扩展寄存器。 对于 NEON 指令,它必须为 D 寄存器。 对于 VFP 指令,它可以为 D 或 S 寄存器。

Rn

是存放要传送的基址的 ARM 寄存器。

offset

是一个可选的数值表达式。 在汇编时,该表达式的值必须为一个数字常数。 该值必须是 4 的倍数,并在 –1020 到 +1020 的范围内。 该值与基址相加得到用于传送的地址。

label

是一个程序相对的表达式。 有关详细信息,请参阅相对寄存器和程序相对的表达式

label 必须位于当前指令的 ±1KB 范围之内。

用法

VLDR 指令可从内存中加载一个扩展寄存器。 VSTR 指令可将一个扩展寄存器的内容保存到内存中。

如果 Fd 是单精度寄存器(仅限 VFP),则传送一个字。 否则传送两个字。

还有一个 VLDR 伪指令(请参阅VLDR 伪指令)。

 

 

 

VLDR 伪指令

VLDR 伪指令将一个常数值加载到 64 位 NEON 向量的每个元素,或者加载到 VFP 单精度或双精度寄存器。

Note

本节仅介绍 VLDR 指令。 有关 VLDR 指令的信息,请参阅VLDR 和 VSTR

语法

VLDR{cond}.datatype Dd,=constant
VLDR{cond}.datatype Sd,=constant

其中:

datatype

必须是下列值之一:

In

仅限 NEON

Sn

仅限 NEON

Un

仅限 NEON

F32

NEON 或 VFP

F64

仅限 VFP

n

必须为 8、16、32 或 64 之一。

cond

是一个可选的条件代码(请参阅条件代码)。

DdSd

是要加载的扩展寄存器。

constant

datatype 的相应类型的常数。

用法

如果某一指令(如 VMOV)可用于直接将常数生成到寄存器中,则汇编器将使用该指令。 否则,汇编器生成一个包含常数的双字文字池条目,并使用 VLDR 指令加载该常数。

你可能感兴趣的:(ARM,扩展,汇编,存储)