POP

命令形式

          // ポップ
POP PC;
POP STS;
POP LOOP;

POP PC;
POP STS;

POP PC, POP STS;

説明

POP命令は内蔵スタックに退避してあるレジスタを復帰します。復帰の方法は復帰するレジスタごとに異なります。この命令は取り扱いが微妙であるため、独自に割り込みハンドラやOSを書くとき、およびループの中断以外には利用しないほうがいいかもしれません。

PC
POP PC命令はPCスタックをポップして値をSTACKP:STACKAレジスタ・ペアに格納します。この二つのレジスタはPUSH/POPレジスタ専用のスクラッチ・レジスタです。ADSP-2191のシーケンサーはRTIやRTS命令を実行すると自動的にPCの値をPCスタックからポップしますが、POP PC命令がポップした値を格納するのはPCではないことに気をつけてください。
STS
POP STS命令はステータス・スタックをポップして値をASTAT、MSTATレジスタに格納します。
LOOP
POP LOOP命令はループ先頭アドレス・スタックをポップして値をSTACP:STACKAレジスタ・ペアに、ループ・ボトム・アドレス・スタックをポップして値をLPSTACKP:LPSTACKAレジスタ・ペアに、ループ・カウンタ・スタックをポップして値をCNTRに格納します。この動作はシーケンサーがDOループを終了した場合とは異なることに注意してください。

二つのPOP命令をコンマで区切って並べることにより、1サイクルで二つのポップ命令を実行できます。ただし、POP PCとPOP LOOPは同時実行できません。また、PUSH命令とPOP命令をコンマで区切って同時実行できますが、その必要があるかどうかは疑問を感じます。

POP命令はシーケンサーの動作に直接影響を与えます。そのため、パイプラインの動作が微妙な場所では使用が禁止されています。

厳密に言えば、ループ・ボトムから6命令以上はなれていればPOP命令を使用してもかまいません。しかし、実際には使えないと考えたほうが安全でしょう。ループを中断する場合には、一旦ジャンプ命令でループから飛び出してからPOP LOOP命令を実行してください。

2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |