24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

CMPS/CMPSB/CMPSW/CMPSD—Compare String Operands ( 続き ) 実アドレス・モード例外 #GP メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 仮想 8086 モード例外 #GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #AC(0) アライメン ト ・ チェ ッ クがイネーブルにされていて、 アラ イ メン ト が合わないメモ リ 参照が行われた場合。 3:434 第 3 巻 : IA-32 基本命令リファレンス

CMPXCHG—Compare and Exchange オペコード 命令 説明 0F B0/r CMPXCHG r/m8,r8 AL を r/m8 と比較し、等しい場合は ZF をセットし、r8 を r/m8 に ロードする。等しくない場合は ZF をクリアし、r/m8 を AL にロー ドする。 0F B1/r CMPXCHG r/m16,r16 AX を r/m16 と比較し、等しい場合は ZF をセットし、r16 を r/m16 にロードする。等しくない場合は ZF をクリアし、r/m16 を AL に ロードする。 0F B1/r CMPXCHG r/m32,r32 EAX を r/m32 と比較し、等しい場合は ZF をセットし、r32 を r/m32 にロードする。等しくない場合は ZF をクリアし、r/m32 を AL にロードする。 説明 ( オペラン ド のサイズに従って ) AL、 AX、 または EAX レジスタの値を第1オペラン ド ( デステ ィ ネーシ ョ ン ・ オペラン ド ) と比較する。 2 つの値が等しい場合は、 第 2 オペラ ンド ( ソース ・オペランド ) がデスティネーション・オペランドにロードされる。 等し くない場合は、 デスティネーション・オペランドがAL、 AX、 または EAX レジスタに ロード される。 この命令は、 前に LOCK プ リ フ ィ ッ ク ス を付け る こ と に よ り 、 自動的に実行 さ せる こ と ができ る。 プロセッサのバス と のインタ フ ェ ースを単純にするため、 デステ ィ ネーシ ョ ン ・ オペラ ン ド は比較の結果にかかわ り な く 書き込みサイ ク ルを受け る。 比較が失敗し た場合はデステ ィ ネーシ ョ ン ・ オペラン ド がデステ ィ ネーシ ョ ンに書き戻され、 比較が 成功した場合は ソ ー ス ・ オペラ ン ド がデス テ ィ ネ ー シ ョ ン に書き込まれる。 ( プロセッサ は、 同時にロッ ク書き込みも伴わずにロッ ク読み取りを生じるこ とは決してない。 ) 操作 (* accumulator = AL, AX, or EAX, depending on whether *) (* a byte, word, or doubleword comparison is being performed*) IF Itanium System Environment AND External_Atomic_Lock_Required AND DCR.lc THEN IA-32_Intercept(LOCK,CMPXCHG); IF accumulator = DEST THEN ZF ← 1 DEST ← SRC ELSE ZF ← 0 accumulator ← DEST FI; 影響を受けるフラグ デステ ィ ネーシ ョ ン ・ オペラン ド と AL、 AX、 または EAX レジスタの値が等しい場合は ZF フラグがセッ ト され、 等し く ない場合はク リ アされる。 CF、 PF、 AF、 SF、 OF フラ グは比較演算の結果に従 っ てセ ッ ト さ れる。 第 3 巻 : IA-32 基本命令リファレンス 3:435

CMPS/CMPSB/CMPSW/CMPSD—Compare String Operands ( 続き )<br />

実アドレス・モード例外<br />

#GP メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、<br />

または GS セグ メ ン ト の範囲外の場合。<br />

#SS メモリ ・ オペランドの実効アドレスが SS セグメン ト の範<br />

囲外の場合。<br />

仮想 8086 モード例外<br />

#GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、<br />

または GS セグ メ ン ト の範囲外の場合。<br />

#SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範<br />

囲外の場合。<br />

#PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。<br />

#AC(0) アライメン ト ・ チェ ッ クがイネーブルにされていて、 アラ<br />

イ メン ト が合わないメモ リ 参照が行われた場合。<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!