- | push,pushm,pop,popm命令は,デバイスには存在しない疑似命令です。 |
スタック領域へのレジスタのプッシュ,ポップを行います。
- | pushm reg1, reg2, ..., regN |
- | popm reg1, reg2, ..., regN |
- | それぞれ次のように命令展開が行われ,複数個の機械語命令が生成されます。 |
|
|
push reg1
|
add -4, sp
st.w reg1, 0[sp]
|
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]
|
pop reg1
|
ld.w 0[sp], reg1
add 4, sp
|
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
|
注意 | add/addi命令を使用するため,PSWの内容が不定になります。
デバイスが提供しているpushsp,popsp命令の使用を推奨します。 |