PLD 命令を使用しようとしています。私が直面している問題は次のとおりです。
int32_t addr[10];
asm ("PLD [addr,#5]");
次のエラーが表示されます:
Error: ARM register expected -- `pld [addr,#5]'
プリロード命令で使用されるアドレスは、レジスターにある必要があります。addr はレジスターではなく、変数 (メモリー位置) です。
int32_t addr[10];
asm ("PLD [%[ADDR],#5] \n\t"
:
: [ADDR]"r"(addr)
);
登録リストでモノに名前を付けてから、示されているように指定します。5 は、プリフェッチに使用する奇妙な数字です。ほとんどの PC は 32 などのサイズで動作します。
pld を使用する場合、メモリ内の各行のサイズは、ipad と ipad2 のアーム チップでは明らかに 64 バイトです。したがって、最も効率的に pld を実行するには、64 バイト サイズの範囲に対して 1 つの pld を実行し、ループを展開してその範囲だけをカバーするのが最適です (それがプログラムされているコードのタイプである場合)。
たとえば、pld ごとに 16 個の 32 ビット float サイズのエントリを移動する場合があります。