4.3.7. PLD 和 PLI

预载数据和预载指令。 处理器可向内存系统发送信号,告诉内存系统在不久的将来可能要从某个地址加载数据或指令。

是否执行 PLDPLI 是可选的。 如果未实现,则它们的执行方式与 NOP 类似。

语法


PLtype{cond} [Rn {, #offset}]


PLtype{cond} [Rn, +/-Rm {, shift}]


PLtype{cond} label

其中:

type

D(数据)或 I(指令)。

cond

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

Note

这是 ARM 中的无条件指令。cond 只能在 Thumb-2 代码中使用,且前面要有 IT 指令。

Rn

是内存地址所基于的寄存器。

offset

是直接偏移量。 如果省略偏移量,则该地址为 Rn 中的地址。

Rm

是一个寄存器,包含要用作偏移量的值。Rm 不能为 r15。

shift

是一个可选的移位。

label

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

偏移量范围

预载前,会先将偏移量应用到 Rn 中的值。 所得结果将用作预载的内存地址。 偏移量的允许范围为:

  • -4095 到 +4095(ARM 指令)

  • -255 到 +4095(Thumb-2 指令)。

汇编程序会计算PC 相对的偏移量。 如果 label 超出范围,汇编程序将会生成错误。

寄存器或寄存器移位偏移量

在 ARM 中,Rm 中的值既可与 Rn 中的值相加,也可从其中减去。 但在 Thumb-2 中,Rm 中的值只能与 Rn 中的值相加。 所得结果将用作预载的内存地址。

移位的允许范围为:

  • LSL 0 到 3(Thumb-2 指令)

  • 对于 ARM 指令,可为以下范围之一:

    • LSL 0 到 31

    • LSR 1 到 32

    • ASR 1 到 32

    • ROR 1 到 31

    • RRX

预载的地址对齐

对于预载指令,系统不执行对齐检查。

体系结构

ARM PLD 可用于 ARMv5TE 及更高版本。 ARM PLI 可用于 ARMv7。

32 位 Thumb PLD 可用于 ARMv6T2 或更高版本。 32 位 Thumb PLI 可用于 ARMv7。

无 16 位 Thumb PLDPLI 指令。

Copyright © 2002-2007 ARM Limited. All rights reserved. ARM DUI 0204HC
Non-Confidential