24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

操作 : if (PR[qp]) { if (p1 == p2) illegal_operation_fault(); tmp_nat = (register_form ? GR[r 2 ].nat : 0) || GR[r 3 ].nat; if (register_form) tmp_src = GR[r 2 ]; else if (imm8_form) tmp_src = sign_ext(imm 8 , 8); else // parallel_inequality_form tmp_src = 0; if (crel == ‘eq’) tmp_rel = tmp_src == GR[r 3 ]; else if (crel == ‘ne’) tmp_rel = tmp_src != GR[r 3 ]; else if (crel == ‘lt’) tmp_rel = lesser_signed(tmp_src, GR[r 3 ]); else if (crel == ‘le’) tmp_rel = lesser_equal_signed(tmp_src, GR[r 3 ]); else if (crel == ‘gt’) tmp_rel = greater_signed(tmp_src, GR[r 3 ]); else if (crel == ‘ge’) tmp_rel = greater_equal_signed(tmp_src, GR[r 3 ]); else if (crel == ‘ltu’) tmp_rel = lesser(tmp_src, GR[r 3 ]); else if (crel == ‘leu’) tmp_rel = lesser_equal(tmp_src, GR[r 3 ]); else if (crel == ‘gtu’) tmp_rel = greater(tmp_src, GR[r 3 ]); else tmp_rel = greater_equal(tmp_src, GR[r 3 ]);//‘geu’ switch (ctype) { case ‘and’: // and-type compare if (tmp_nat || !tmp_rel) { PR[p 1 ] = 0; PR[p 2 ] = 0; } break; case ‘or’: // or-type compare if (!tmp_nat && tmp_rel) { PR[p 1 ] = 1; PR[p 2] = 1; } break; case ‘or.andcm’: // or.andcm-type compare if (!tmp_nat && tmp_rel) { PR[p 1 ] = 1; PR[p 2] = 0; } break; case ‘unc’: // unc-type compare default: // normal compare if (tmp_nat) { PR[p 1] = 0; PR[p 2 ] = 0; } else { PR[p 1] = tmp_rel; PR[p 2 ] = !tmp_rel; } break; } } else { if (ctype == ‘unc’) { if (p1 == p2) illegal_operation_fault(); PR[p 1] = 0; PR[p 2 ] = 0; } } 割り込み : 無効操作フ ォ ル ト 3:36 第 3 巻 : 命令リファレンス cmp

cmp4 cmp4 ─ 4 バイト比較 (Compare 4 Bytes) 書式 : (qp) cmp4.crel.ctype p 1 , p 2 = r 2 , r 3 register_form A6 (qp) cmp4.crel.ctype p 1 , p 2 = imm 8 , r 3 imm8_form A8 (qp) cmp4.crel.ctype p 1 , p 2 = r0, r 3 parallel_inequality_form A7 (qp) cmp4.crel.ctype p 1 , p 2 = r 3 , r0 擬似オペ コ ー ド 説明 : 2 つのソース ・ オペラン ド のそれぞれの最下位 32 ビッ トが、 crel で指定される 10 種類の 関係のいずれか 1 つについて比較される。 この比較によ り、 ブール結果が生成される。 ブール結果は、 比較条件が真の場合に 1 になり、 真でない場合に 0 になる。 この結果は、 2 つのプレディケート ・レジスタ・デスティネーションp1 と p2 に書き込 ま れる。 結果が デステ ィ ネーシ ョ ンにどのよ う に書き込まれるかは、 ctype で指定される比較タ イプに よ り決まる。 Compare 命令 と 表 2-15 を参照のこ と。 register_form では、 第 1 オペラン ド は GR r2 であり、 imm8_form では、 第 1 オペラン ド は符号拡張された imm8 エンコ ーデ ィ ング ・ フ ィ ール ド で与えられる。 また、 parallel_inequality_form では、 第 1 オペラン ド は GR 0 でなければならない。 parallel_inequality_form は、 比較タイプが並列タイプのいずれかであり、 かつ関係が不等 (>、 >=、 = b 0 .. 127, 2 32 -128 .. 2 32 -1 即値の範囲 第 3 巻 : 命令リファレンス 3:37

cmp4<br />

cmp4 ─ 4 バイト比較 (Compare 4 Bytes)<br />

書式 : (qp) cmp4.crel.ctype p 1 , p 2 = r 2 , r 3 register_form A6<br />

(qp) cmp4.crel.ctype p 1 , p 2 = imm 8 , r 3 imm8_form A8<br />

(qp) cmp4.crel.ctype p 1 , p 2 = r0, r 3 parallel_inequality_form A7<br />

(qp) cmp4.crel.ctype p 1 , p 2 = r 3 , r0 擬似オペ コ ー ド<br />

説明 : 2 つのソース ・ オペラン ド のそれぞれの最下位 32 ビッ トが、 crel で指定される 10 種類の<br />

関係のいずれか 1 つについて比較される。 この比較によ り、 ブール結果が生成される。<br />

ブール結果は、 比較条件が真の場合に 1 になり、 真でない場合に 0 になる。 この結果は、<br />

2 つのプレディケート ・レジスタ・デスティネーションp1 と p2 に書き込 ま れる。 結果が<br />

デステ ィ ネーシ ョ ンにどのよ う に書き込まれるかは、 ctype で指定される比較タ イプに よ<br />

り決まる。 Compare 命令 と 表 2-15 を参照のこ と。<br />

register_form では、 第 1 オペラン ド は GR r2 であり、 imm8_form では、 第 1 オペラン ド<br />

は符号拡張された imm8 エンコ ーデ ィ ング ・ フ ィ ール ド で与えられる。 また、<br />

parallel_inequality_form では、 第 1 オペラン ド は GR 0 でなければならない。<br />

parallel_inequality_form は、 比較タイプが並列タイプのいずれかであり、 かつ関係が不等<br />

(>、 >=、 = b 0 .. 127, 2 32 -128 .. 2 32 -1<br />

即値の範囲<br />

第 3 巻 : 命令リファレンス 3:37

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!