2

PLD 命令を使用しようとしています。私が直面している問題は次のとおりです。

int32_t addr[10];
asm ("PLD [addr,#5]");

次のエラーが表示されます:

Error: ARM register expected -- `pld [addr,#5]'
4

2 に答える 2

2

プリロード命令で使用されるアドレスは、レジスターにある必要があります。addr はレジスターではなく、変数 (メモリー位置) です。

于 2011-03-12T17:17:03.357 に答える
1
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 サイズのエントリを移動する場合があります。

于 2011-06-13T22:45:10.587 に答える