16.02.2013 Aufrufe

24531904_j

24531904_j

24531904_j

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Jcc—Jump if Condition Is Met ( 続き )<br />

ターゲッ ト命令は相対オフセット (EIP レジスタ内の命令ポインタの現在値に相対的な符<br />

号付き オ フ セ ッ ト ) で指定される。 相対オフセ ッ ト (rel8、 rel16、 または rel32) は、 アセ<br />

ンブリ ・ コードでは一般的にラベルとして指定されるが、 マシン・ コード ・レベルでは、<br />

符号付き の 8 ビッ トまたは32 ビ ッ ト の即値 と して コ ー ド 化 され、 命令ポ イ ン タ に加算 さ<br />

れる。 この命令のコ ーデ ィ ングは、 -128 ~ +127 のオフセッ ト の場合に最も効率がよい。<br />

オペラン ド ・ サイズ属性が 16 である場合は、 EIP レジスタの上位2バイ ト は 0 にク リア<br />

され、 命令ポインタの最大サイズは 16 ビッ トになる。<br />

各 Jcc ニーモニッ クの条件は、 前 2 ページの表の 「説明」 欄に示している。 「よ り小さ<br />

い」 と 「よ り 大きい」 の表現は、 符号付き整数の比較に使用され、 「よ り上」 と 「よ り<br />

下」 の表現は、 符号なし整数の比較に使用 さ れている。<br />

ス テ ー タ ス ・ フ ラ グの特定の状態は と き と して 2 種類に解釈される こ と があるので、 一<br />

部のオペコ ー ド に対しては 2 つのニーモニ ッ クが定義されている。 例えば、 JA ( より上<br />

の場合ジ ャ ンプ ) 命令 と JNBE ( より下でなく等しくない場合ジャンプ) 命令は、 オペ<br />

コード 77H に対する 2 つのニーモニッ クである。<br />

Jcc 命令では、 far ジャンプ( 他の コ ー ド ・ セグメ ン ト へのジ ャ ンプ ) をサポー ト していな<br />

い。 条件付き ジ ャ ンプのタ ーゲ ッ ト が別のセグ メン ト にある場合は、 Jcc 命令に対する テ<br />

ス ト 対象の条件 と 反対の条件を使用し、 次に他のセグ メ ン ト への無条件 far ジャンプ<br />

(JMP 命令 ) で タ ー ゲ ッ ト にア ク セスする。 例えば、 以下の条件付き far ジャンプは不当<br />

である。<br />

JZ FARLABEL;<br />

このfar ジ ャ ン プを行 う に は、 以下の 2 つの命令を使用する。<br />

JNZ BEYOND;<br />

JMP FARLABEL;<br />

BEYOND:<br />

JECXZ 命令お よ び JCXZ 命令は、 ス テ ー タ ス ・ フ ラ グをチ ェ ッ ク しない点で他の Jcc 命<br />

令とは異なっている。 その代わりに、 これらの命令はそれぞれECX および CX レジスタ<br />

の内容が 0 かどうかをチェ ッ クする。 これらの命令は、 (LOOPNE などの ) 条件付き ルー<br />

プ命令で終了す る条件付き ル ー プの先頭に使用す る と 役立つ。 すなわち、 ECX または<br />

CX レジスタが0 に等しいと きループに入らないよ うにして、 ループがゼロ回でな く そ<br />

れぞれ 232 または 64K 回実行してし ま う のを回避する。<br />

条件付き ジ ャ ンプはすべて、 ジ ャ ンプ ・ ア ド レ ス に も 、 キ ャ ッ シ ュ 可能か ど う かに も 関<br />

係な く 、 1 または 2 キャッシュ ・ ラインのコード ・ フェッチに変換される。<br />

操作<br />

IF condition<br />

THEN<br />

EIP ← EIP + SignExtend(DEST);<br />

IF OperandSize = 16<br />

THEN<br />

EIP ← EIP AND 0000FFFFH;<br />

FI;<br />

IF Itanium System Environment AND PSR.tb THEN IA-32_Exception(Debug);<br />

FI;<br />

影響を受けるフラグ<br />

なし。<br />

3:610 第 3 巻 : IA-32 基本命令リファレンス

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!