4.9.4. LDC、LDC2、STC 和 STC2

在内存和协处理器之间传送数据。

语法

op{L}{cond} coproc, CRd, [Rn]
op{L}{cond} coproc, CRd, [Rn, #{-}offset]{!}
op{L}{cond} coproc, CRd, [Rn], #{-}offset
op{L}{cond} coproc, CRd, label

其中:

op

LDCLDC2STCSTC2 之一。

cond

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

在 ARM 代码中,不允许为 LDC2STC2 使用 cond

L

是一个可选的后缀,它指定一个长整数传送。

coproc

是要运行指令的协处理器的名称。 标准名称为 pn,其中 n 为 0 到 15 范围内的整数。

CRd

是要加载或存储的协处理器寄存器。

Rn

是内存地址所基于的寄存器。 如果指定了 r15,则使用的值是当前指令地址加 8。

-

是一个可选的减号。 如果存在 -,则会从 Rn 中减去偏移量。 否则,会将偏移量加到 Rn 中。

offset

是一个表达式,其值为 0 到 1020 范围内的 4 的倍数。

!

是一个可选的后缀。 如果有 ! ,则包含偏移量的地址将被写回到 Rn 中。

label

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

label 必须位于当前指令的 1020 字节范围内。

用法

这些指令的具体用法取决于协处理器。 有关详细信息,请参阅协处理器文档。

在 Thumb-2EE 中,如果基址寄存器中的值为零,则代码将跳转到位于 HandlerBase - 4 的 NullCheck 处理程序处执行。

体系结构

LDCSTC 在所有版本的 ARM 体系结构中都有效。

LDC2STC2 可用于 ARMv5 及更高版本。

这些 32 位 Thumb 指令可用于 ARMv6T2 及更高版本。

这些指令均无 16 位 Thumb 版本。

说明

不提倡在 STCSTC2 指令中使用程序相对寻址。

Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IC
Non-Confidential