PUSH および POP

完全降順スタックに対してレジスタのプッシュとポップを実行します。

Show/hide構文

PUSH{cond} reglist
POP{cond} reglist

各項目には以下の意味があります。

cond

任意の条件コードを指定します。

reglist

レジスタの非空リストで、中括弧で囲まれます。レジスタ範囲も中に含まれます。複数のレジスタまたはレジスタ範囲を指定する場合は、コンマで区切る必要があります。

Show/hide使用法

PUSHSTMDB sp!, reglist と同じ意味です。また、POPLDMIA sp! reglist と同じ意味です。このような場合は、PUSH および POP ニーモニックを使用するのが適切です。

Note

LDM および LDMFDLDMIA と同じ意味です。STMFDSTMDB と同じ意味です。

レジスタは、番号順にスタックにストアされます。最も小さな番号のレジスタが最下位アドレスにストアされます。

Show/hidereglist に PC を含む POP

この命令は、スタックから PC にポップされたアドレスへの分岐を発生させます。一般的には、サブルーチンからの復帰に使用します。サブルーチンでは LR がサブルーチン開始位置でスタックにプッシュされます。

ロードされたアドレスのビット [1:0] は 0b10 にできません。ビット [0] が 1 なら、T32 状態で実行が継続します。ビット [0] が 0 なら、A32 状態で実行が継続します。

Show/hideT32 命令

これらの命令のサブセットは、T32 命令セットで使用できます。

16 ビット命令には、以下の制約条件が適用されます。

  • PUSH の場合、reglist が格納できるのは、Lo レジスタと LR だけです。

  • POP の場合、reglist が格納できるのは、Lo レジスタと PC だけです。

32 ビット命令には、以下の制約条件が適用されます。

  • reglist に SP を格納できません。

  • PUSH の場合、reglist に PC を格納できません。

  • POP の場合、reglist に LR と PC のいずれかを格納できますが、両方は格納できません。

Show/hideA32 命令の reglist に関する制約条件

A32 PUSH 命令は、reglist に SP および PC を持つことができますが、reglist に SP または PC を含む命令は非推奨です。

A32 POP 命令は、reglist に SP を持つことはできませんが、PC を持つことができます。reglist に PC と LR の両方を含むこれらの命令は非推奨です。

Show/hide

    PUSH    {r0,r4-r7}
    PUSH    {r2,lr}
    POP     {r0,r10,pc} ; 16 ビットバージョンは使用できない

Show/hide関連項目

Copyright © 2014 ARM. All rights reserved.ARM DUI 0802AJ
Non-ConfidentialID061814