24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

LOCK—Assert LOCK# Signal Prefix オペコード 命令 説明 F0 LOCK 後の命令の実行中 LOCK# 信号をアサートする。 説明 こ のプ リ フ ィ ッ ク スの後の命令の実行中、 プ ロ セ ッ サの LOCK# 信号をアサー ト さ せる ( すなわち、 その命令をア ト ム命令に変える )。 マルチプロセッサ環境では、 LOCK# 信 号は、 それがアサー ト されている間プロセ ッ サが任意の共有メモ リ を独占的に使用でき る よ う に保証す る。 LOCK プリフィックスは、 ADD、 ADC、 AND、 BTC、 BTR、 BTS、 CMPXCHG、 DEC、 INC、 NEG、 NOT、 OR、 SBB、 SUB、 XOR、 XADD、 XCHG の各命令と これらの命令の メ モ リ ・ オペラ ン ド を使用す る形式の前に使用で き る。 LOCK プリフィックスを上記以 外の ど の命令に使用した場合 も 、 未定義オペ コ ー ド 例外が発生する。 XCHG 命令は、 LOCK プリフィックスの有無に関係なく、 常にLOCK# 信号をアサー ト する。 一般的に、 LOCK プリフィックスは、 共有メモリ環境内のメモリ ・ロケーションでの読 み取り / 修正 / 書き込み操作を実行する場合に BTS 命令に付けて使用される。 LOCK プ リ フ ッ ク スの有効性は メ モ リ ・ フ ィ ー ル ド のア ラ イ メ ン ト に よ っ て損なわれな い。 アラ イ メ ン ト がどの よ う にずれている メモ リ ・ フ ィ ール ド に対して も、 メモ リ ・ ロックは変わりなく有効である。 操作 IF Itanium System Environment AND External_Bus_Lock_Required AND DCR.lc THEN IA-32_Intercept(LOCK); AssertLOCK#(DurationOfAccompaningInstruction) 影響を受けるフラグ なし。 追加の Itanium ベース・システム環境例外 Itanium アーキテクチャ ・ メモリ ・ フォル ト VHPT データ ・ フォル ト、 ネス ト された TLB フォルト、 データ TLB フォルト、 代替データTLB フォルト、 デー タ・ページ不在フォルト、 データNaT ページ参照アボー ト、 データ・キー・ ミス・フォルト、 データ・キー許可 フォルト、 データ・アクセス権フォルト、 データ・アクセ ス・ビット ・フォルト、 データ・ダーティ ・ビット ・フォ ルト。 IA-32_Intercept ロック・インターセプト - DCR.lc が 1 であ り 、 こ の操作を 完了するために外部ア ト ミ ッ ク ・ バス ・ ロ ッ ク が必要であ る場合は、 ア ト ミ ッ ク ・ ト ランザクシ ョ ンは発生せず、 こ の命令は失敗し、 IA-32_Intercept(Lock) フォルトが発生す る。 ソフ ト ウェア ・ ロ ッ ク ・ ハン ド ラが、 この命令をエ ミュレートする責任を負う。 3:642 第 3 巻 : IA-32 基本命令リファレンス

LOCK—Assert LOCK# Signal Prefix ( 続き ) 保護モード例外 #UD LOCK プ リ フ ィ ッ ク スが、 上記の 「説明」 の項に示してい ない命令に使用 さ れた場合。 こ の、 LOCK プリフックスが 適用されよ う と した命令か ら は、 他に も 例外が発生する可 能性がある。 実アドレス・モード例外 #UD LOCK プ リ フ ィ ッ ク スが、 上記の 「説明」 の項に示してい ない命令に使用 さ れた場合。 こ の、 LOCK プリフックスが 適用されよ う と した命令か ら は、 他に も 例外が発生する可 能性がある。 仮想 8086 モード例外 #UD LOCK プ リ フ ィ ッ ク スが、 上記の 「説明」 の項に示してい ない命令に使用 さ れた場合。 こ の、 LOCK プリフックスが 適用されよ う と した命令か ら は、 他に も 例外が発生する可 能性がある。 第 3 巻 : IA-32 基本命令リファレンス 3:643

LOCK—Assert LOCK# Signal Prefix<br />

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

F0 LOCK 後の命令の実行中 LOCK# 信号をアサートする。<br />

説明<br />

こ のプ リ フ ィ ッ ク スの後の命令の実行中、 プ ロ セ ッ サの LOCK# 信号をアサー ト さ せる<br />

( すなわち、 その命令をア ト ム命令に変える )。 マルチプロセッサ環境では、 LOCK# 信<br />

号は、 それがアサー ト されている間プロセ ッ サが任意の共有メモ リ を独占的に使用でき<br />

る よ う に保証す る。<br />

LOCK プリフィックスは、 ADD、 ADC、 AND、 BTC、 BTR、 BTS、 CMPXCHG、 DEC、<br />

INC、 NEG、 NOT、 OR、 SBB、 SUB、 XOR、 XADD、 XCHG の各命令と これらの命令の<br />

メ モ リ ・ オペラ ン ド を使用す る形式の前に使用で き る。 LOCK プリフィックスを上記以<br />

外の ど の命令に使用した場合 も 、 未定義オペ コ ー ド 例外が発生する。 XCHG 命令は、<br />

LOCK プリフィックスの有無に関係なく、 常にLOCK# 信号をアサー ト する。<br />

一般的に、 LOCK プリフィックスは、 共有メモリ環境内のメモリ ・ロケーションでの読<br />

み取り / 修正 / 書き込み操作を実行する場合に BTS 命令に付けて使用される。<br />

LOCK プ リ フ ッ ク スの有効性は メ モ リ ・ フ ィ ー ル ド のア ラ イ メ ン ト に よ っ て損なわれな<br />

い。 アラ イ メ ン ト がどの よ う にずれている メモ リ ・ フ ィ ール ド に対して も、 メモ リ ・<br />

ロックは変わりなく有効である。<br />

操作<br />

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

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

AssertLOCK#(DurationOfAccompaningInstruction)<br />

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

なし。<br />

追加の Itanium ベース・システム環境例外<br />

Itanium アーキテクチャ ・<br />

メモリ ・ フォル ト<br />

VHPT データ ・ フォル ト、 ネス ト された TLB フォルト、<br />

データ TLB フォルト、 代替データTLB フォルト、 デー<br />

タ・ページ不在フォルト、 データNaT ページ参照アボー<br />

ト、 データ・キー・ ミス・フォルト、 データ・キー許可<br />

フォルト、 データ・アクセス権フォルト、 データ・アクセ<br />

ス・ビット ・フォルト、 データ・ダーティ ・ビット ・フォ<br />

ルト。<br />

IA-32_Intercept ロック・インターセプト - DCR.lc が 1 であ り 、 こ の操作を<br />

完了するために外部ア ト ミ ッ ク ・ バス ・ ロ ッ ク が必要であ<br />

る場合は、 ア ト ミ ッ ク ・ ト ランザクシ ョ ンは発生せず、 こ<br />

の命令は失敗し、 IA-32_Intercept(Lock) フォルトが発生す<br />

る。 ソフ ト ウェア ・ ロ ッ ク ・ ハン ド ラが、 この命令をエ<br />

ミュレートする責任を負う。<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!