popm


スタック領域からのポップ(複数レジスタ)を行います。(Pop Multiple)

[指定形式]

popm reg1, reg2, …, regN

[機能]

オペランドに指定したレジスタ値を,指定した順にスタック領域からポップします。

[詳細説明]

-

popm命令に対し,アセンブラでは,命令展開が行われ,複数個の機械語命令が生成されます。

レジスタが3個以下の場合

popm    reg1, reg2, …, regN
ld.w    4 * 0[sp], reg1
ld.w    4 * 1[sp], reg2
  :
ld.w    4 * (N - 1)[sp], regN
add     4 * N, sp

レジスタが4個以上の場合

popm    reg1, reg2, …, regN
ld.w    4 * 0[sp], reg1
ld.w    4 * 1[sp], reg2
  :
ld.w    4 * (N - 1)[sp], regN
addi    4 * N, sp, sp

[フラグ]

CY

MSB(Most Significant Bit)からのキャリーを生じた場合1,そうでない場合0

OV

Integer-Overflowを生じた場合1,そうでない場合0

S

結果が負になった場合1,そうでない場合0

Z

結果が0になった場合1,そうでない場合0

SAT

注意

命令展開が行われ,add/addi命令により設定されます。