0

次の ARM 命令は、複数の浮動小数点レジスタを 1 つの命令でメモリに格納します (もちろん、レジスタを格納するたびにベース アドレスをインクリメントします)。

VSTMIA R0! {S1-S4}

ここでの問題は、レジスタ リストが連続している必要があることです。つまり、R0 の S1、R0+4 の S3 などのレジスタを転送したい場合、単一のストアを呼び出さずにそれを行うことはできません。1 回のパスでメモリに格納したいレジスタがいくつかありますが、問題はそれらを異なる順序で格納する必要があることです。私は本当にレジスタを交換したくありません(私は約7つのレジスタを持っています)。では、これに対するよりスマートなアプローチはありますか? また、VSTM を使用した単一の複数転送が、単一の VSTR 命令を使用して複数の転送を実行するよりも高速であるかどうかを知っている人はいますか?

4

1 に答える 1

0

使用している CPU アーキテクチャについて言及するのを忘れていました。NEON のコードを作成する場合は、ARM のブログのこのページを参照してください: NEON のコーディング - パート 5: ベクトルの再配置

編集:
VSTM を使用した単一の複数転送は、単一の VSTR 命令を使用して複数の転送を行うよりも高速ですか?

おそらくですが、誰かの言葉を鵜呑みにしないでください。最善の策は、コードをプロファイリングし、コアのテクニカル リファレンス マニュアルを確認することです。

于 2012-09-21T00:15:54.163 に答える