5

我对 ARM cortex A8 中 PLD 指令的使用有一些疑问。当我在循环内使用指令时,可能会出现超出范围的内存访问。我怀疑这是否会导致分段错误。我在ARM 手册中读到,其中指出

由于所有级别的高速缓存都将 PLD 指令作为任何其他加载指令来处理,因此 PLD 指令遵循标准的数据依赖规则和逐出程序。在 PLD 执行的任何阶段,如果发生地址转换错误、高速缓存命中或中止,PLD 指令将被忽略。

因此,如果进行了越界内存访问,相应的 PLD 指令是否会被忽略是我的疑问。

4

1 回答 1

5

PLD 指令不会产生分段错误。如果 PLD 要求内存系统访问一个不存在的内存区域,它会被忽略。

来自 ARM

Preload 指令是提示,因此实现可以将它们视为 NOP,而不会影响设备的功能行为。这些指令不会产生同步数据中止异常,但内存系统操作可能会在异常情况下产生异步中止。

...

但是,由于这些内存系统提示之一而执行的内存操作可能会触发异步事件,从而影响处理器的执行。可能触发的异步事件的示例是异步中止和中断。

于 2012-10-30T13:33:39.717 回答