| STATE(特権命令) MMU関連命令 <<L1>>,<<L2>> |
【ニモニックとオペランド】
STATE srcadr, dest
Store from address translation table entry
アドレス変換テーブルエントリからのストア
【オプション】
【命令フォーマットと表記法】
ttt ストアするアドレス変換テーブルエントリ ttt = 000 PTEからのストア(/PT) ttt = 001 STEからのストア(/ST)
これ以外の ttt 指定は予約命令例外を発生させます。レジスタ上のパラメータ
R1 : UATBと等価の情報
【解説】
この命令はsrcadrオペランドの実効アドレス(論理アドレス)を計算し、それを物理アドレスに変換する際に使用するアドレス変換テーブルエントリ(ATE)をdestに格納します。STEをストアするか、PTEをストアするかは、tttで指定します。
srcadrで示された論理アドレスが正の場合、UATBではなく汎用レジスタR1を使用してアドレス変換が行われます。したがって、UATBの中で常に0のビットはR1でも0でなければなりません(チェックは行いません)。しかし、論理アドレスが負の場合には、アドレス変換はSATBを使用して通常の命令と同様に行われます。
この命令の実行中にリング遷移違反例外が検出されても、無視されます。他の例外はV_flagとF_flagをセットして示され、EIT処理なしに命令が完了して、デスティネーションオペランドは変わりません。フラグのセット条件として以下の4つの場合があります。
(1) 正常終了 ; ストアされたATEの次段がページイン。
(V_flag = 0, F_flag = 0)(2) ATEのストア成功。しかし、未使用域参照、不正ATE、またはページ不在例外のため次段がページ不在。
(V_flag = 0, F_flag = 1)(3) 未使用域参照かまたは不正ATE例外のためにATEのストア失敗。
(V_flag = 1,F_flag = 0)(4) アドレス変換中に検出されたページ不在例外のためにATEのストア失敗。
(V_flag = 1, F_flag = 1)
*“次段”はアドレス変換プロセスの次の段を意味しています。セクションテーブルエントリをストアする(/STオプション)場合にはページテーブルが次の段であり、ページテーブルエントリをストアする(/PTオプション)場合にはページフレームが次の段です。
(1), (2)のケース(STATEの正常終了)では、V_flagがクリアされ、tttで示されたアドレステーブルエントリからPIビットの反転値がF_flagに入ります。
STATE命令は、PSWのATビットの設定に関係なく、srcadrオペランドのアドレス変換を行います。destオペランドは、通常のアドレス変換を行います。
STATEは特権命令です。
【フラグ変化】
【発生EIT】
RIE srcadr [Gen/a], dest [Gen-S/w]のアドレッシングモード違反 RIE ttt ≧ 010, s = 1 PIVE リング0以外で実行
【使用例】
汎用レジスタR3の内容で指定されたオペランドの論理アドレスを計算し、ページテーブルの対応エントリの内容をR5に書き込みます。