5

ARM Cortex A8 での PLD 命令の使用法について疑問があります。ループ内で命令を使用しているため、範囲外のメモリアクセスが発生する可能性があります。私の疑問は、それがセグメンテーション違反を引き起こすかどうかです。私はそれを述べているARMマニュアルを読みました

PLD 命令はすべてのレベルのキャッシュで他のロード命令と同様に処理されるため、PLD 命令は標準のデータ依存性ルールとエビクション手順に従います。PLD 実行のどの段階でも、アドレス変換エラー、キャッシュ ヒット、またはアボートの場合、PLD 命令は無視されます。

したがって、境界外のメモリアクセスが行われた場合、対応する PLD 命令が無視されるかどうかは疑問です。

4

1 に答える 1

5

PLD 命令は、セグメンテーション違反を作成しません。PLD がメモリ システムに存在しないメモリ領域に到達するように要求した場合、それは無視されます。

アームアームから

プリロード命令はヒントであるため、実装はデバイスの機能的動作に影響を与えずに NOP として扱うことができます。命令は同期データ アボート例外を生成しませんが、メモリ システム操作は、例外的な状況下で非同期アボートを生成する場合があります。

...

ただし、これらのメモリ システム ヒントのいずれかの結果として実行されるメモリ操作は、非同期イベントをトリガーする可能性があり、プロセッサの実行に影響を与えます。トリガーされる可能性のある非同期イベントの例は、非同期アボートと割り込みです。

于 2012-10-30T13:33:39.717 に答える