ARM Arch64 の NEON コーディングでは、どのようにレジスタをスタックにプッシュしますか?STMFD は Arch64 の命令セットの一部ではないようです?レジスタ ペアを 1 つずつスタックに保存しますか?
1927 次
1 に答える
1
AArch64 の設計者はSTM
/LDM
命令を意図的に削除しました。おそらく、命令のスケジューリングと障害処理を簡素化するためです。
3.5 メモリロードストア
3.5.1 バルク転送LDM、STM、PUSH、および POP 命令は A64 には存在しませんが、LDP および STP 命令を使用してバルク転送を構築できます。これらの命令は、連続したメモリ位置から独立したレジスタのペアをロードおよびストアし、通常のメモリにアクセスするときに非整列アドレスをサポートします。 . さらに、LDNP および STNP 命令は、データをキャッシュに保持する必要がないという「ストリーミング」または「非一時的」ヒントを提供します。PRFM (プリフェッチ メモリ) 命令には、「ストリーミング」または「非一時的」アクセスのヒントも含まれており、特定のキャッシュ レベルへのプリフェッチのターゲットを設定できます。
( ARMv8 ISA の概要から)
そうです、代わりに複数のSTP
/LDP
命令を使用することになっています。
于 2014-02-25T15:05:37.627 に答える