次の方法で共有


x64 の手順

ほとんどの x86 命令は、64 ビット モードの x64 で引き続き有効です。 使用頻度の低い一部の操作は、次のような 64 ビット モードではサポートされなくなりました。

  • 2 進数でコーディングされた 10 進演算命令: AAA、AAD、AAM、AAS、DAA、DAS

  • BOUND

  • PUSHAD と POPAD

  • PUSH DS や POP DS など、セグメント レジスタを処理するほとんどの操作。 (FS または GS セグメント レジスターを使用する操作は、引き続き有効です)。

x64 命令セットには、SSE 2 など、x86 への最近の追加が含まれています。 x64 用にコンパイルされたプログラムは、次の手順を自由に使用できます。

データ転送

x64 は、64 ビット即時定数またはメモリ アドレスを処理できる MOV 命令の新しいバリアントを提供します。

MOV

r,#n

r = #n

MOV

rax, m

64 ビット アドレスの内容を rax に移動します。

MOV

m, rax

rax の内容を 64 ビット アドレスに移動します。

x64 には、32 ビット オペランドを 64 ビットに符号拡張する新しい命令も用意されています。

MOVSXD

r1, r/m

符号拡張が付いた DWORD を QWORD に移動します。

32 ビット サブレジスタへの通常の MOV 操作では、自動的に 0 が 64 ビットに拡張されるため、MOVZXD 命令はありません。

2 つの SSE 命令を使用して、メモリから xmmn レジスタまたはその逆に 128 ビット値 (GUID など) を移動できます。

MOVDQA

r1/m, r2/m

128 ビット整列値を xmmn レジスタに、またはその逆に移動します。

MOVDQU

r1/m, r2/m

128 ビット値 (必ずしも整列されていない) をレジスタに移動するか、またはその逆に移動します。

データ変換

CDQE

dword (eax) を qword (rax) に変換します。

CQO

qword (rax) を oword (rdx:rax) に変換します。

文字列操作

MOVSQ

rsi から rdi に qword を移動します。

CMPSQ

rsi の qword と rdi を比較します。

SCASQ

rdi で qword をスキャンします。 rdi の qword を rax と比較します。

LODSQ

rsi から rax に qword を読み込みます。

STOSQ

rax から rdi に qword を格納します。