ENA

命令形式

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

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

説明

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

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になると明示的にクリアするまでは0に戻りません。
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ビットを1にする命令です。

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

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