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.

CMPXCHG—Compare and Exchange<br />

オペコード 命令 説明<br />

0F B0/r CMPXCHG r/m8,r8 AL を r/m8 と比較し、等しい場合は ZF をセットし、r8 を r/m8 に<br />

ロードする。等しくない場合は ZF をクリアし、r/m8 を AL にロー<br />

ドする。<br />

0F B1/r CMPXCHG r/m16,r16 AX を r/m16 と比較し、等しい場合は ZF をセットし、r16 を r/m16<br />

にロードする。等しくない場合は ZF をクリアし、r/m16 を AL に<br />

ロードする。<br />

0F B1/r CMPXCHG r/m32,r32 EAX を r/m32 と比較し、等しい場合は ZF をセットし、r32 を<br />

r/m32 にロードする。等しくない場合は ZF をクリアし、r/m32 を<br />

AL にロードする。<br />

説明<br />

( オペラン ド のサイズに従って ) AL、 AX、 または EAX レジスタの値を第1オペラン ド<br />

( デステ ィ ネーシ ョ ン ・ オペラン ド ) と比較する。 2 つの値が等しい場合は、 第 2 オペラ<br />

ンド ( ソース ・オペランド ) がデスティネーション・オペランドにロードされる。 等し<br />

くない場合は、 デスティネーション・オペランドがAL、 AX、 または EAX レジスタに<br />

ロード される。<br />

この命令は、 前に LOCK プ リ フ ィ ッ ク ス を付け る こ と に よ り 、 自動的に実行 さ せる こ と<br />

ができ る。 プロセッサのバス と のインタ フ ェ ースを単純にするため、 デステ ィ ネーシ ョ<br />

ン ・ オペラ ン ド は比較の結果にかかわ り な く 書き込みサイ ク ルを受け る。 比較が失敗し<br />

た場合はデステ ィ ネーシ ョ ン ・ オペラン ド がデステ ィ ネーシ ョ ンに書き戻され、 比較が<br />

成功した場合は ソ ー ス ・ オペラ ン ド がデス テ ィ ネ ー シ ョ ン に書き込まれる。 ( プロセッサ<br />

は、 同時にロッ ク書き込みも伴わずにロッ ク読み取りを生じるこ とは決してない。 )<br />

操作<br />

(* accumulator = AL, AX, or EAX, depending on whether *)<br />

(* a byte, word, or doubleword comparison is being performed*)<br />

IF Itanium System Environment AND External_Atomic_Lock_Required AND DCR.lc<br />

THEN IA-32_Intercept(LOCK,CMPXCHG);<br />

IF accumulator = DEST<br />

THEN<br />

ZF ← 1<br />

DEST ← SRC<br />

ELSE<br />

ZF ← 0<br />

accumulator ← DEST<br />

FI;<br />

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

デステ ィ ネーシ ョ ン ・ オペラン ド と AL、 AX、 または EAX レジスタの値が等しい場合は<br />

ZF フラグがセッ ト され、 等し く ない場合はク リ アされる。 CF、 PF、 AF、 SF、 OF フラ<br />

グは比較演算の結果に従 っ てセ ッ ト さ れる。<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!