aarch64 アーキテクチャには、複数のストアとロードの命令がありません。つまり、armv7 arch の stm と ldm に相当するものはありません。代わりに、レジスタのペアをストアおよびロードするために stp および ldp 命令を使用する必要があります。
ARMリファレンスマニュアルによると:
複数レジスタの LDM、STM、PUSH、および POP 命令はありませんが、レジスタの非連続ペアのロードストアが利用可能です。
私の質問は、不連続とは何を意味するか、ここで言及しているのかということです。私の即時の反応は、これらのコマンドで連続番号のレジスタを使用できないことを意味するということでした。
stp x0, x1, [sp, #-16]!
違法です。しかし、私はこれが事実だとは思いません。私はこれを正確に行うサンプルコードを見てきました.さらに、(Appleの)Clangで同様のコードを生成することができました.
stp x1, x0, [fp, #-16]!
私は一生、連続が何を意味するのか考えることができません。重複するレジスタを使用することと関係があると思いました。
stp x0, x0, [sp, #-16]!
stp w0, x0, [sp, #-12]!
ただし、このようなことを行うサンプル コードも見てきました (コードが正しかったとは言いません!)。また、これが事実である場合、隣接するのではなく重複する用語を明示的に使用したでしょう。
何か案は?