24531904_j
24531904_j 24531904_j
mov ─ アプリケーション・レジスタの移動 (Move Application Register) mov ar 書式 : (qp) movr1 = ar3 擬似オペ コ ー ド (qp) movar3 = r2 擬似オペ コ ー ド (qp) movar3 = imm8 擬似オペ コ ー ド (qp) mov.ir1 = ar3 i_form, from_form I28 (qp) mov.iar3 = r2 i_form, register_form, to_form I26 (qp) mov.iar3 = imm8 i_form, immediate_form, to_form I27 (qp) mov.mr1 = ar3 m_form, from_form M31 (qp) mov.mar3 = r2 m_form, register_form, to_form M29 (qp) mov.mar3 = imm8 m_form, immediate_form, to_form M30 説明 : ソース・オペランドがデスティネーション・レジスタにコピーされる。 from_form では、 ar3 レジスタによって指定されるアプリケーション ・ レジスタがGR r1 にコピーされ、 対応する NaT ビッ トがクリアされる。 to_form では、 GR r2 の値 (register_form の場合 )、 あるいは imm8 の符号拡張された値 (immediate_form の場合 ) が AR ar3 に格納される。 register_form では、 GR r2 に対応する NaT ビッ トがセットされている場合は、 レジスタNaT 参照 (Register NaT Consumption) フォルトが発生する。 各実行ユニ ッ ト (M または I) からは、 それぞれアプリケーション ・ レジスタの特定のサ ブセッ ト に対してしかアクセスできない。 第 1 巻、 第 1 部の表 3-3 に、 どの実行ユニッ ト・タイプからどのアプリケーション・レジスタにアクセスできるかを示している。間 違 っ たユニ ッ ト ・ タ イ プか ら アプ リ ケ ー シ ョ ン ・ レ ジ ス タ にア ク セス さ れる と 、 無効操 作 (Illegal Operation) フォルトが発生する。 この命令には、 擬似オペコ ー ド が対応していて、 したがって実行ユニッ ト を指定する必 要がない形式が 3 つある。 AR へのア ク セス は常に暗黙的にシ リ アル化 さ れる。 暗黙的 にシ リ アル化が行われる と き は、 リ ー ド ・ アフ タ ー ・ ラ イ ト の依存関係違反 と ラ イ ト ・ ア フ タ ー ・ ラ イ ト の依存関係違反は避けなければな ら ない。 例えば、 同一命令グルー プ 内で CCV を設定してから cmpxchg 命令を使用した り 、 ld.fill 命令に よ る UNAT レ ジスタへの書き込みと UNAT への移動を同時に行 っ た り する こ と な ど が挙げ ら れる。 3:154 第 3 巻 : 命令リファレンス
mov ar 操作 : if (PR[qp]) { tmp_type = (i_form ? AR_I_TYPE : AR_M_TYPE); if (is_reserved_reg(tmp_type, ar 3 )) illegal_operation_fault(); } if (from_form) { check_target_register(r 1 ); if (((ar 3 == BSPSTORE) || (ar 3 == RNAT)) && (AR[RSC].mode != 0)) illegal_operation_fault(); if (ar 3 == ITC && PSR.si && PSR.cpl != 0) privileged_register_fault(); GR[r 1 ] = (is_ignored_reg(ar 3 )) ? 0 : AR[ar 3 ]; GR[r 1 ].nat = 0; } else { // to_form tmp_val = (register_form) ? GR[r 2 ] : sign_ext(imm 8 , 8); } if (is_read_only_register(AR_TYPE, ar 3 ) || (((ar 3 == BSPSTORE) || (ar 3 == RNAT)) && (AR[RSC].mode != 0))) illegal_operation_fault(); if (register_form && GR[r 2 ].nat) register_nat_consumption_fault(0); if (is_reserved_field(AR_TYPE, ar 3 , tmp_val)) reserved_register_field_fault(); if ((is_kernel_reg(ar 3 ) || ar 3 == ITC) && (PSR.cpl != 0)) privileged_register_fault(); if (!is_ignored_reg(ar 3 )) { tmp_val = ignored_field_mask(AR_TYPE, ar 3 , tmp_val); // check for illegal promotion if (ar 3 == RSC && tmp_val{3:2} u< PSR.cpl) tmp_val{3:2} = PSR.cpl; AR[ar 3] = tmp_val; } if (ar 3 == BSPSTORE) { AR[BSP] = rse_update_internal_stack_pointers(tmp_val); AR[RNAT] = undefined(); } 割り込み : 無効操作フ ォル ト 予約レジスタ / フィールド ・フォルト レジスタ NaT 参照フ ォ ル ト 特権レ ジ ス タ ・ フ ォ ル ト 第 3 巻 : 命令リファレンス 3:155
- Seite 115 und 116: fpms fpms ─ 浮動小数点並列
- Seite 117 und 118: fpneg fpneg ─ 浮動小数点並
- Seite 119 und 120: fpnma fpnma ─ 浮動小数点並
- Seite 121 und 122: fpnmpy fpnmpy ─ 浮動小数点
- Seite 123 und 124: fprcpa } else if (fp_is_zero(num) &
- Seite 125 und 126: fprsqrta } tmp_pred_hi = 0; else tm
- Seite 127 und 128: frcpa } fp_update_fpsr(sf, tmp_fp_e
- Seite 129 und 130: frsqrta } PR[p 2 ] = 0; // fp_ieee_
- Seite 131 und 132: fsetc fsetc ─ 浮動小数点コ
- Seite 133 und 134: fswap fswap ─ 浮動小数点ス
- Seite 135 und 136: fsxt fsxt ─ 浮動小数点符号
- Seite 137 und 138: fxor fxor ─ 浮動小数点排他
- Seite 139 und 140: getf } GR[r 1 ] = FR[f 2 ].signific
- Seite 141 und 142: invala invala ─ ALAT の無効化
- Seite 143 und 144: itc 割り込み : マシン ・
- Seite 145 und 146: itr シリアル化 : instruction_f
- Seite 147 und 148: ld 表 2-33. ロード・タイプ(
- Seite 149 und 150: ld if (check && alat_cmp(GENERAL, r
- Seite 151 und 152: ldf ldf ─ 浮動小数点ロー
- Seite 153 und 154: ldf ldfe でのみ発生する。
- Seite 155 und 156: ldfp ldfp ─ 浮動小数点ペア
- Seite 157 und 158: ldfp } } if (base_update_form) { //
- Seite 159 und 160: lfetch 表 2-38. lfhint のニー
- Seite 161 und 162: loadrs loadrs ─ レジスタ・
- Seite 163 und 164: mix mix ─ ミックス (Mix) 書
- Seite 165: mix 操作 : if (PR[qp]) { check_ta
- Seite 169 und 170: mov cr mov ─ コントロール
- Seite 171 und 172: mov fr mov ─ 浮動小数点レ
- Seite 173 und 174: mov imm mov ─ 即値の移動 (Mo
- Seite 175 und 176: mov indirect 操作 : if (PR[qp]) {
- Seite 177 und 178: mov ip mov ─ 命令ポインタ
- Seite 179 und 180: mov psr mov ─ プロセッサ・
- Seite 181 und 182: movl movl ─ ロング型即値の
- Seite 183 und 184: mux 図 2-27. Mux2 の例 (16 ビ
- Seite 185 und 186: nop nop ─ ノー・オペレー
- Seite 187 und 188: pack pack ─ パック (Pack) 書
- Seite 189 und 190: padd padd ─ 並列加算 (Paralle
- Seite 191 und 192: padd } 割り込み : 無効操作
- Seite 193 und 194: pavg 図 2-31. 並列平均での
- Seite 195 und 196: pavgsub pavgsub ─ 並列平均減
- Seite 197 und 198: pcmp pcmp ─ 並列比較 (Paralle
- Seite 199 und 200: pmax pmax ─ 並列最大値 (Para
- Seite 201 und 202: pmpy pmpy ─ 並列乗算 (Paralle
- Seite 203 und 204: pmpyshr 操作 : if (PR[qp]) { chec
- Seite 205 und 206: probe probe ─ アクセスのプ
- Seite 207 und 208: psad psad ─ 並列絶対差累計
- Seite 209 und 210: pshladd pshladd ─ 並列左シフ
- Seite 211 und 212: pshr } 割り込み : 無効操作
- Seite 213 und 214: psub psub ─ 並列減算 (Paralle
- Seite 215 und 216: psub } 割り込み : 無効操作
mov ─ アプリケーション・レジスタの移動 (Move Application Register)<br />
mov ar<br />
書式 : (qp) movr1 = ar3 擬似オペ コ ー ド<br />
(qp) movar3 = r2 擬似オペ コ ー ド<br />
(qp) movar3 = imm8 擬似オペ コ ー ド<br />
(qp) mov.ir1 = ar3 i_form, from_form I28<br />
(qp) mov.iar3 = r2 i_form, register_form, to_form I26<br />
(qp) mov.iar3 = imm8 i_form, immediate_form, to_form I27<br />
(qp) mov.mr1 = ar3 m_form, from_form M31<br />
(qp) mov.mar3 = r2 m_form, register_form, to_form M29<br />
(qp) mov.mar3 = imm8 m_form, immediate_form, to_form M30<br />
説明 : ソース・オペランドがデスティネーション・レジスタにコピーされる。<br />
from_form では、 ar3 レジスタによって指定されるアプリケーション ・ レジスタがGR r1 にコピーされ、 対応する NaT ビッ トがクリアされる。<br />
to_form では、 GR r2 の値 (register_form の場合 )、 あるいは imm8 の符号拡張された値<br />
(immediate_form の場合 ) が AR ar3 に格納される。 register_form では、 GR r2 に対応する<br />
NaT ビッ トがセットされている場合は、 レジスタNaT 参照 (Register NaT Consumption)<br />
フォルトが発生する。<br />
各実行ユニ ッ ト (M または I) からは、 それぞれアプリケーション ・ レジスタの特定のサ<br />
ブセッ ト に対してしかアクセスできない。 第 1 巻、 第 1 部の表 3-3 に、 どの実行ユニッ<br />
ト・タイプからどのアプリケーション・レジスタにアクセスできるかを示している。間<br />
違 っ たユニ ッ ト ・ タ イ プか ら アプ リ ケ ー シ ョ ン ・ レ ジ ス タ にア ク セス さ れる と 、 無効操<br />
作 (Illegal Operation) フォルトが発生する。<br />
この命令には、 擬似オペコ ー ド が対応していて、 したがって実行ユニッ ト を指定する必<br />
要がない形式が 3 つある。 AR へのア ク セス は常に暗黙的にシ リ アル化 さ れる。 暗黙的<br />
にシ リ アル化が行われる と き は、 リ ー ド ・ アフ タ ー ・ ラ イ ト の依存関係違反 と ラ イ ト ・<br />
ア フ タ ー ・ ラ イ ト の依存関係違反は避けなければな ら ない。 例えば、 同一命令グルー プ<br />
内で CCV を設定してから cmpxchg 命令を使用した り 、 ld.fill 命令に よ る UNAT レ<br />
ジスタへの書き込みと UNAT への移動を同時に行 っ た り する こ と な ど が挙げ ら れる。<br />
3:154 第 3 巻 : 命令リファレンス