pushm


スタック領域へのプッシュ(複数レジスタ)を行います。(Push Multiple)

[指定形式]

pushm reg1, reg2, …, regN

[機能]

オペランドに指定したレジスタ値を,スタック領域へプッシュします。

[詳細説明]

-

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

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

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

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

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

[フラグ]

CY

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

OV

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

S

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

Z

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

SAT

注意

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