24531904_j
24531904_j 24531904_j
XCHG—Exchange Register/Memory with Register ( 続き ) 追加の Itanium ベース・システム環境例外 Itanium アーキテクチャ ・ レジスタ ・ フォルト Itanium アーキテクチャ ・ メモリ ・ フォル ト IA-32_Intercept ロック・インターセプト - DCR.lc が 1 であ り 、 こ の操作を 完了するために外部ア ト ミ ッ ク ・ バス ・ ロ ッ ク が必要であ る場合は、 ア ト ミ ッ ク ・ ト ランザクシ ョ ンは発生せず、 こ の命令は失敗し、 IA-32_Intercept(Lock) フォルトが発生す る。 ソフ ト ウェア ・ ロ ッ ク ・ ハン ド ラが、 この命令をエ ミュレートする責任を負う。 保護モード例外 #GP(0) いずれかのオペラン ド が書き込み不可能なセグメン ト にあ る場合。 メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 DS、 ES、 FS、 または GS レジスタの内容がNULL セグメ ン ト ・ セ レ ク タ の場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #AC(0) 現行特権レベルが 3 のときに、 アライメント ・チェックが イネーブルにされていて、 アライメントが合わないメモリ 参照が行われた場合。 実アドレス・モード例外 #GP メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 仮想 8086 モード例外 NaT レ ジ ス タ参照アボ ー ト 。 VHPT データ・フォル ト、ネス ト された TLB フォルト、デー タ TLB フォルト、代替データTLB フォルト、データ・ペー ジ不在フ ォル ト、 データ NaT ページ参照アボー ト、 デー タ・キー・ミス・フォルト、 データ・キー許可フォルト、 データ ・アクセス権フォルト、 データ ・アクセス・ ビッ ト ・ フォルト、 データ・ダーティ ・ビット ・フォルト。 #GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #AC(0) アライメン ト ・ チェ ッ クがイネーブルにされていて、 アラ イ メン ト が合わないメモ リ 参照が行われた場合。 3:776 第 3 巻 : IA-32 基本命令リファレンス
XLAT/XLATB—Table Look-up Translation オペコード 命令 説明 D7 XLAT m8 AL をメモリ・バイト DS:[(E)BX+ 符号なし AL] に設定する。 D7 XLATB AL をメモリ・バイト DS:[(E)BX+ 符号なし AL] に設定する。 説明 AL レジスタの内容をテーブル ・ インデックスとして使用して、 メモリ内のテーブルのバ イト ・エントリの位置を探し、 テーブル・エント リの内容をAL レジスタにコピーし直 す。 AL レ ジスタのイ ンデ ッ ク スは、 符号なし整数 と して取り扱われる。 XLAT 命令 と XLATB 命令は、 メモリ内のテーブルのベース ・ アド レスを、 DS:EBX レジスタから ( ア ドレス・サイズ属性が16 ビッ トの場合はDS:BX レジスタから ) 取得す る。 XLAT 命令 は、 セグメント ・ オーバライドを使用して、 異なるセグメント ・ レジスタを指定できる。 ど ち ら の命令を使用して も 、 アセンブル時に は同じ マシ ン ・ コ ー ド が生成される。 操作 IF AddressSize = 16 THEN AL ← (DS:BX + ZeroExtend(AL)) ELSE (* AddressSize = 32 *) AL ← (DS:EBX + ZeroExtend(AL)); FI; 影響を受けるフラグ なし。 追加の Itanium ベース・システム環境例外 Itanium アーキテクチャ ・ レジスタ ・ フォルト Itanium アーキテクチャ ・ メモリ ・ フォル ト NaT レ ジ ス タ参照アボ ー ト 。 VHPT データ・ フォ ルト 、 ネスト さ れた TLB フォルト 、 データ TLB フォルト 、 代替データ TLB フォルト 、 データ・ ペー ジ 不在フ ォ ルト 、 デー タ NaT ペー ジ参照アボー ト 、 データ・キー・ミス・フォルト、データ・キー許可フォル ト 、 データ・ アク セス権フォ ルト 、 データ・ アク セス・ ビッ ト ・ フォルト 、 データ・ ダーティ ・ ビッ ト ・ フォルト 。 保護モード例外 #GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、 または GS セグ メ ン ト の範囲外の場合。 DS、 ES、 FS、 または GS レジスタの内容がNULL セグメ ン ト ・ セ レ ク タ の場合。 #SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #AC(0) 現行特権レベルが 3 のときに、 アライメント ・チェックが イネーブルにされていて、 アライメントが合わないメモリ 参照が行われた場合。 第 3 巻 : IA-32 基本命令リファレンス 3:777
- Seite 738 und 739: SAL/SAR/SHL/SHR—Shift ( 続き )
- Seite 740 und 741: SAL/SAR/SHL/SHR—Shift ( 続き )
- Seite 742 und 743: SBB—Integer Subtraction with Borr
- Seite 744 und 745: SCAS/SCASB/SCASW/SCASD—Scan Strin
- Seite 746 und 747: SETcc—Set Byte on Condition オ
- Seite 748 und 749: SETcc—Set Byte on Condition ( 続
- Seite 750 und 751: SGDT/SIDT—Store Global/Interrupt
- Seite 752 und 753: SHLD—Double Precision Shift Left
- Seite 754 und 755: SHLD—Double Precision Shift Left
- Seite 756 und 757: SHRD—Double Precision Shift Right
- Seite 758 und 759: SIDT—Store Interrupt Descriptor T
- Seite 760 und 761: SLDT—Store Local Descriptor Table
- Seite 762 und 763: SMSW—Store Machine Status Word (
- Seite 764 und 765: STD—Set Direction Flag オペコ
- Seite 766 und 767: STI—Set Interrupt Flag ( 続き )
- Seite 768 und 769: STOS/STOSB/STOSW/STOSD—Store Stri
- Seite 770 und 771: STOS/STOSB/STOSW/STOSD—Store Stri
- Seite 772 und 773: STR—Store Task Register ( 続き
- Seite 774 und 775: SUB—Subtract ( 続き ) 保護モ
- Seite 776 und 777: TEST—Logical Compare ( 続き )
- Seite 778 und 779: VERR, VERW—Verify a Segment for R
- Seite 780 und 781: WAIT/FWAIT—Wait オペコード
- Seite 782 und 783: WBINVD—Write Back and Invalidate
- Seite 784 und 785: WRMSR—Write to Model Specific Reg
- Seite 786 und 787: XADD—Exchange and Add ( 続き )
- Seite 790 und 791: XLAT/XLATB—Table Look-up Translat
- Seite 792 und 793: XOR—Logical Exclusive OR ( 続き
- Seite 794 und 795: EMMS—Empty MMX State オペコー
- Seite 796 und 797: MOVD—Move 32 Bits ( 続き ) 追
- Seite 798 und 799: MOVQ—Move 64 Bits オペコード
- Seite 800 und 801: PACKSSWB/PACKSSDW—Pack with Signe
- Seite 802 und 803: PACKSSWB/PACKSSDW—Pack with Signe
- Seite 804 und 805: PACKUSWB—Pack with Unsigned Satur
- Seite 806 und 807: PADDB/PADDW/PADDD—Packed Add (
- Seite 808 und 809: PADDSB/PADDSW—Packed Add with Sat
- Seite 810 und 811: PADDSB/PADDSW—Packed Add with Sat
- Seite 812 und 813: PADDUSB/PADDUSW—Packed Add Unsign
- Seite 814 und 815: PAND—Logical AND オペコード
- Seite 816 und 817: PANDN—Logical AND NOT オペコ
- Seite 818 und 819: PCMPEQB/PCMPEQW/PCMPEQD—Packed Co
- Seite 820 und 821: PCMPEQB/PCMPEQW/PCMPEQD—Packed Co
- Seite 822 und 823: PCMPGTB/PCMPGTW/PCMPGTD—Packed Co
- Seite 824 und 825: PMADDWD—Packed Multiply and Add
- Seite 826 und 827: PMULHW—Packed Multiply High オ
- Seite 828 und 829: PMULLW—Packed Multiply Low オペ
- Seite 830 und 831: POR—Bitwise Logical OR オペコ
- Seite 832 und 833: PSLLW/PSLLD/PSLLQ—Packed Shift Le
- Seite 834 und 835: PSLLW/PSLLD/PSLLQ—Packed Shift Le
- Seite 836 und 837: PSRAW/PSRAD—Packed Shift Right Ar
XLAT/XLATB—Table Look-up Translation<br />
オペコード 命令 説明<br />
D7 XLAT m8 AL をメモリ・バイト DS:[(E)BX+ 符号なし AL] に設定する。<br />
D7 XLATB AL をメモリ・バイト DS:[(E)BX+ 符号なし AL] に設定する。<br />
説明<br />
AL レジスタの内容をテーブル ・ インデックスとして使用して、 メモリ内のテーブルのバ<br />
イト ・エントリの位置を探し、 テーブル・エント リの内容をAL レジスタにコピーし直<br />
す。 AL レ ジスタのイ ンデ ッ ク スは、 符号なし整数 と して取り扱われる。 XLAT 命令 と<br />
XLATB 命令は、 メモリ内のテーブルのベース ・ アド レスを、 DS:EBX レジスタから ( ア<br />
ドレス・サイズ属性が16 ビッ トの場合はDS:BX レジスタから ) 取得す る。 XLAT 命令<br />
は、 セグメント ・ オーバライドを使用して、 異なるセグメント ・ レジスタを指定できる。<br />
ど ち ら の命令を使用して も 、 アセンブル時に は同じ マシ ン ・ コ ー ド が生成される。<br />
操作<br />
IF AddressSize = 16<br />
THEN<br />
AL ← (DS:BX + ZeroExtend(AL))<br />
ELSE (* AddressSize = 32 *)<br />
AL ← (DS:EBX + ZeroExtend(AL));<br />
FI;<br />
影響を受けるフラグ<br />
なし。<br />
追加の Itanium ベース・システム環境例外<br />
Itanium アーキテクチャ ・<br />
レジスタ ・ フォルト<br />
Itanium アーキテクチャ ・<br />
メモリ ・ フォル ト<br />
NaT レ ジ ス タ参照アボ ー ト 。<br />
VHPT データ・ フォ ルト 、 ネスト さ れた TLB フォルト 、<br />
データ TLB フォルト 、 代替データ TLB フォルト 、 データ・<br />
ペー ジ 不在フ ォ ルト 、 デー タ NaT ペー ジ参照アボー ト 、<br />
データ・キー・ミス・フォルト、データ・キー許可フォル<br />
ト 、 データ・ アク セス権フォ ルト 、 データ・ アク セス・<br />
ビッ ト ・ フォルト 、 データ・ ダーティ ・ ビッ ト ・ フォルト 。<br />
保護モード例外<br />
#GP(0) メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS、<br />
または GS セグ メ ン ト の範囲外の場合。<br />
DS、 ES、 FS、 または GS レジスタの内容がNULL セグメ<br />
ン ト ・ セ レ ク タ の場合。<br />
#SS(0) メモリ ・ オペランドの実効アドレスが SS セグメン ト の範<br />
囲外の場合。<br />
#PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。<br />
#AC(0) 現行特権レベルが 3 のときに、 アライメント ・チェックが<br />
イネーブルにされていて、 アライメントが合わないメモリ<br />
参照が行われた場合。<br />
第 3 巻 : IA-32 基本命令リファレンス 3:777