24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

CPUID—CPU Identification ( 続き ) EBX ← Reserved, Undefined; ECX ← Reserved, Undefined; EDX ← Reserved, Undefined; BREAK; ESAC; memory_fence(); instruction_serialize(); 影響を受けるフラグ なし。 追加の Itanium ベース・システム環境例外 Itanium アーキテクチャ ・ レジスタ ・ フォルト 例外 ( すべての操作モード ) なし。 NaT レ ジ ス タ参照アボ ー ト 。 インテル・アーキテクチャにおける互換性 CPUID 命令は、 初期モデルの Intel486 プロセッサまたは Intel486 プロセッサよ り も以前 のすべてのインテル ・ アーキテ クチャ ・ プロセ ッサでサポー ト されていない。 EFLAGS レジスタのID フ ラ グを使用して、 こ の命令がサポ ー ト されている か ど う かを判定で き る。 プロシージ ャがこのフラグをセッ ト またはク リアできれば、 プロセッサがそのプロ シージャを実行して CPUID をサポー ト できる。 3:444 第 3 巻 : IA-32 基本命令リファレンス

CWD/CDQ—Convert Word to Doubleword/Convert Doubleword to Quadword オペコード 命令 説明 99 CWD DX:AX ← AX の符号拡張 99 CDQ EDX:EAX ← EAX の符号拡張 説明 ( オペラン ド ・ サイズによ り ) AX または EAX レジスタ内のオペランドのサイズを符号 拡張に よ っ て 2 倍に拡張し、 結果を それぞれ DX:AX または EDX:EAX レジスタにストア する。 CWD 命令は、 AX レ ジスタの値の符号 ( ビッ ト 15) を DX レジスタのすべての ビッ ト位置にコピーする。 CDQ 命令は、 EAX レジスタの値の符号( ビット 31) を EDX レ ジ ス タ のすべての ビ ッ ト 位置に コ ピ ー す る。 CWD 命令を使用す る と 、 ワ ー ド 除算の前に ワ ー ド か ら ダブルワ ー ド の被除数を作る こ と ができ、 CDQ 命令を使用する と、 ダブルワ ー ド 除算の前にダブルワ ー ド か ら ク ワ ッ ド ワードの被除数を作れる。 CWD および CDQ ニーモニッ クは同じオペコー ド を参照する。 CWD 命令は オペラ ン ド ・ サイズ属性が 16 のとき、 またCDQ 命令は オペラ ン ド ・ サイ ズ属性が 32 のときに使用 するこ とを目的としている。 一部のアセンブラには、 CWD が使用された と き はオペラン ド・サイズを16 ビッ トに、 またCDQ が使用された と き は 32 ビ ッ ト に強制で き る も の がある。 その他のアセンブ ラ は、 こ れ ら のニー モニ ッ ク を同義語 (CWD/CDQ) として取 り 扱い、 ど ち ら のニ ー モニ ッ ク が使用 さ れて も 、 その と き のオペラ ン ド ・ サイ ズ属性の 設定を使用して変換対象の値のサイズを判定でき る。 操作 IF OperandSize = 16 (* CWD instruction *) THEN DX ← SignExtend(AX); ELSE (* OperandSize = 32, CDQ instruction *) EDX ← SignExtend(EAX); FI; 追加の Itanium ベース・システム環境例外 Itanium アーキテクチャ ・ レジスタ ・ フォルト 影響を受けるフラグ なし。 例外 ( すべての操作モード ) なし。 NaT レ ジ ス タ参照アボ ー ト 。 第 3 巻 : IA-32 基本命令リファレンス 3:445

CWD/CDQ—Convert Word to Doubleword/Convert Doubleword to Quadword<br />

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

99 CWD DX:AX ← AX の符号拡張<br />

99 CDQ EDX:EAX ← EAX の符号拡張<br />

説明<br />

( オペラン ド ・ サイズによ り ) AX または EAX レジスタ内のオペランドのサイズを符号<br />

拡張に よ っ て 2 倍に拡張し、 結果を それぞれ DX:AX または EDX:EAX レジスタにストア<br />

する。 CWD 命令は、 AX レ ジスタの値の符号 ( ビッ ト 15) を DX レジスタのすべての<br />

ビッ ト位置にコピーする。 CDQ 命令は、 EAX レジスタの値の符号( ビット 31) を EDX<br />

レ ジ ス タ のすべての ビ ッ ト 位置に コ ピ ー す る。<br />

CWD 命令を使用す る と 、 ワ ー ド 除算の前に ワ ー ド か ら ダブルワ ー ド の被除数を作る こ と<br />

ができ、 CDQ 命令を使用する と、 ダブルワ ー ド 除算の前にダブルワ ー ド か ら ク ワ ッ ド<br />

ワードの被除数を作れる。<br />

CWD および CDQ ニーモニッ クは同じオペコー ド を参照する。 CWD 命令は オペラ ン ド ・<br />

サイズ属性が 16 のとき、 またCDQ 命令は オペラ ン ド ・ サイ ズ属性が 32 のときに使用<br />

するこ とを目的としている。 一部のアセンブラには、 CWD が使用された と き はオペラン<br />

ド・サイズを16 ビッ トに、 またCDQ が使用された と き は 32 ビ ッ ト に強制で き る も の<br />

がある。 その他のアセンブ ラ は、 こ れ ら のニー モニ ッ ク を同義語 (CWD/CDQ) として取<br />

り 扱い、 ど ち ら のニ ー モニ ッ ク が使用 さ れて も 、 その と き のオペラ ン ド ・ サイ ズ属性の<br />

設定を使用して変換対象の値のサイズを判定でき る。<br />

操作<br />

IF OperandSize = 16 (* CWD instruction *)<br />

THEN DX ← SignExtend(AX);<br />

ELSE (* OperandSize = 32, CDQ instruction *)<br />

EDX ← SignExtend(EAX);<br />

FI;<br />

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

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

レジスタ ・ フォルト<br />

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

なし。<br />

例外 ( すべての操作モード )<br />

なし。<br />

NaT レ ジ ス タ参照アボ ー ト 。<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!