第二部 トロン仕様チップ命令詳細第十二章 キュー操作命令
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_flagZ_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に格納されます。