| QDEL キュー操作命令 <<L1R>>,<<L1>>,<<L2>> |
【ニモニックとオペランド】
QDEL queue, dest
【機能】
Delete entry from queue
キューからエントリを削除
【オプション】
なし
【命令フォーマットと表記法】
【解説】
QDEL命令では、queueオペランドで指定されたエントリの直後のエントリが削除され、削除されたエントリのアドレスがdestオペランドで指定されたロケーションに格納されます。任意のキューエントリを削除できます。
QDEL命令の実行手順を以下に詳述します。QDEL実行前と実行後の
キューの状態を示します。以下に示すキューエントリは便宜のために付番してあります。
(1) queue エントリ直前のエントリ
(2) queueオペランドで指定するエントリ(queue エントリ)
(3) queue エントリ直後のエントリ
(4) 削除するエントリ(3)の直後のエントリ
手順
queue エントリ(2)のアドレスを直後のエントリ(3)(queue エントリの前方リンクで示される)のアドレスと比較します。
2つのアドレスが同一の場合には、queueは空キューですから、V_flagとZ_flagをセットして終了します。destの内容は変わりません。
2つのアドレスが同一でない場合には、処理が続行されます。queue エントリ(2)の前方リンクが変化して、削除されたエントリの直後にあったエントリ(4)を指定し、エントリ(4)の後方リンクが変化して、queueエントリを指定します。
さらに、以下に示すように、エントリ(1)の前方リンクとqueueエントリ(2)の後方リンクにentryで指定する新しいエントリのアドレスをセットします。
削除されたentry(3)のアドレスがdestで指定されるロケーションにストアされます。削除されたentryの前方リンクと後方リンクは変わりません。
queueオペランドで指定する既存のエントリがキューヘッダである場合には、キューの先頭エントリが削除されるので、注意する必要があります。さらに、QDEL実行後キューが空になる場合には、Z_flagがセットされます。
【フラグ変化】
【発生EIT】
RIE queue [Gen-IRS/rx], dest [Gen-S/w]のアドレッシングモード違反 RIE s = 1
【使用例】
汎用レジスタR3の内容を先頭アドレスとするエントリの直後のキューエントリがキューから削除されます。削除されたエントリのアドレスはR5に格納されます。