DIS

命令形式

          // 機能を有効化する
DIS <mode>

DIS SEC_REG;
DIS INT;
DIS SEC_REG, DIS SEC_DAG;  // 複数のDIS命令を連結できる

説明

モード制御命令です。実行すると動作モードが変わります。以下のオペランドを採ることができます。

SEC_REG : Secondary Register (MSTAT[0])
演算レジスタ群が表レジスタに変わります。
BIT_REV : Bit Reversal (MSTAT[1])
DAG1レジスタの出力がビット正順になります。
AV_LATCH : ALU overflow staus latch mode. (MSTAT[2])
ASTATのAVビットが通常モードで動きます。ラッチモードの場合、1命令ごとの結果がAVビットに反映されます
AR_SAT : AR register saturation mode (MSTAT[3])
ARレジスタを飽和モードではなくラップアラウンドで動かします。
M_MODE : Multiplier Mode (MSTAT[4])
乗算器が固定小数点モードで動きます
TIMER : TImer Mode (MSTAT[5])
タイマーを動作させます。なお、このオペランドはADSP-2191では無視されますので使わないでください。
SEC_DAG : Secondary DAG (MSTAT[6])
DAGレジスタ群が表レジスタに変わります。
INT : Interrupt
219xコアが割り込み不能になります。ICNTLレジスタのGIEビットを0にする命令です。

INTを除くモードは、MSTATのビットと一対一対応になっています。そのため、割り込みハンドラ内でこれらのモードを設定してもRTIを実行すると設定が元に戻ってしまいます。

MSTATはロード・レイテンシが長いため、普通に値をロードすると実際にモードが変わるのは数サイクル後になります。反面、DIS命令を使えば次のサイクルでモードが切り替わっています。可能な限りM_STATをいじらずDIS命令を使ってください。詳細はHRM A-6を参照してください。

詳細はISRの8-69ページと、HRMのA-10ページを参照してください。

文法要素

<mode>  ::= SEC_REG, BIT_REV, AV_LATCH, AR_SAT, M_MODE, TIMER, SEC_DAG, INT
2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |