山本ワールド
x86
概要
x86は8086から始まっています。
ここでは8086~Core i7の第1世代のNehalemまでの命令セットの概要を示します。
ここでは8086~Core i7の第1世代のNehalemまでの命令セットの概要を示します。
8086
1978年にIntelが発表した16bit CPUである。外部バスが8bitの8088が1979年に発表されIBM PCに採用された。
アドレスバスは20bitである。
アドレスバスの拡張に伴い4本の16bit長のセグメントレジスタを採用している。
8086が外部データーバスが16bit、8088が外部データーバスが8bitでありアドレスバスとマルチプレックスされている。
8bit CPUである8085と比べて、インデックスなど大幅なアドレッシングモードの追加、8/16bit演算命令、乗除算命令の追加など大幅に拡張されている。
トランジスタ 2万9千個 プロセス3μ
8086 5MHz
8086-2 8MHz
8086-1 10MHz
40ピンDIP
SPはSSがディフォルト
IPはCSがディフォルト
0 上記以外
0:ストリング命令でインクリメント
0 割り込み許可
0:Single Step Modeが無効
0 上記以外
8bitのADA,ADCの後にAAA,DAA,AAS,DASを使用すると1桁に桁あふれが生じているときに1,2桁目を補正できる。
0 加算命令実行時:演算結果を超えていない(キャリーなし)
基本的な命令にレジスタやアドレッシングモードの情報を付加するバイト(mod-r/m)が付属しています。
≠ 等しくない
∨Boolean OR
⊻Boolean exclusive OR
∧ Boolean AND
¬ Boolean Not
% 余
>> 右シフト
<< 左シフト
⇄ 交換
アドレスバスは20bitである。
アドレスバスの拡張に伴い4本の16bit長のセグメントレジスタを採用している。
8086が外部データーバスが16bit、8088が外部データーバスが8bitでありアドレスバスとマルチプレックスされている。
8bit CPUである8085と比べて、インデックスなど大幅なアドレッシングモードの追加、8/16bit演算命令、乗除算命令の追加など大幅に拡張されている。
トランジスタ 2万9千個 プロセス3μ
8086 5MHz
8086-2 8MHz
8086-1 10MHz
40ピンDIP
レジスタ
16bitレジスタが8本、そのうち4本は分割して8bitレジスタとして使用可能。AX | AH | AL | Accumulator |
BX | BH | BL | Base |
CX | CH | CL | Count |
DX | DH | DL | Data |
SP | Stack Pointer | ||
BP | base Pointer | ||
SI | Source Index | ||
DI | Destination Index | ||
IP | Instruction Pointer | ||
FlagsH | FlagsL | Status Flags | |
CS | Code Segment | ||
DS | Data Segment | ||
SS | Stack Segment | ||
ES | Extra Segment |
IPはCSがディフォルト
FLAGS
下位8bitのフラグのビット配置は8080と互換性があります。15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
x | x | x | x | OF | DF | IF | TF | SF | ZF | x | AF | x | PF | x | CF |
OF オーバーフローフラグ
1 演算結果が符号ありの最大範囲を超えた0 上記以外
DF 方向フラグ
1:ストリング命令でデクリメント0:ストリング命令でインクリメント
IFフラグ
1 割り込み禁止0 割り込み許可
TFフラグ
1:Single Step Modeが有効0:Single Step Modeが無効
SF サインフラグ
1 演算結果の最上位ビットが1 0 上記以外ZF ゼロフラグ
1 演算結果が00 上記以外
AF ハーフキャリー
BCD演算の1桁目が桁あふれかどうかを示す。8bitのADA,ADCの後にAAA,DAA,AAS,DASを使用すると1桁に桁あふれが生じているときに1,2桁目を補正できる。
PF パリティキャリー
1のビットが偶数個の時セットされる。CF キャリーフラグ
1 加算命令実行時:演算結果を超えた(キャリーあり)0 加算命令実行時:演算結果を超えていない(キャリーなし)
メモリー
FFFF0h | RESET時のジャンプ先 |
00000h~003FFh | 割込みポインター(255個) |
番号 | 内容 |
0 | 除算エラー |
1 | 予約済みフォルト |
2 | NMI 割り込み |
3 | ブレークポイント INT 3命令 |
4 | オーバーフロー、INTO命令 |
命令
基本的に8bit/16bit命令がそれぞれほぼ対象に存在しています。基本的な命令にレジスタやアドレッシングモードの情報を付加するバイト(mod-r/m)が付属しています。
8086/8088命令一覧
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
mov | r/m,reg | r/m←reg | 1 0 0 0 1 0 | 0 | w | mod | reg | r/m | ||||||||||
mov | reg,r/m | reg←r/m | 1 0 0 0 1 0 | 1 | w | mod | reg | r/m | ||||||||||
mov | reg,imm | reg←imm | 1 0 1 1 | w | reg | |||||||||||||
mov | A,(ads) | A←(ads) | 1 0 1 0 0 0 | 0 | w | |||||||||||||
mov | (ads),A | (ads)←A | 1 0 1 0 0 0 | 1 | w | |||||||||||||
mov | sreg,r/m | sreg←r/m | 1 0 0 0 1 1 1 0 | mod | 0 | sreg | r/m | |||||||||||
mov | r/m,sreg | r/m←sreg | 1 0 0 0 1 1 0 0 | mod | 0 | sreg | r/m | |||||||||||
push | r/m | --SP,[SP]←r/m | 1 1 1 1 1 1 1 1 | mod | 1 1 0 | r/m | ||||||||||||
push | reg | --SP,[SP]←reg | 0 1 0 1 0 | reg | ||||||||||||||
push | sreg | --SP,[SP]←sreg | 0 0 0 | sreg | 1 1 0 | |||||||||||||
pop | r/m | r/m←[SP],++SP | 1 0 0 0 1 1 1 1 | mod | 0 0 0 | r/m | ||||||||||||
pop | reg | reg←[SP],++SP | 0 1 0 1 1 | reg | ||||||||||||||
pop | sreg | sreg←[SP],++SP | 0 0 0 | sreg | 1 1 1 | |||||||||||||
xchg | r/m,reg | r/m⇄reg 8bit | 1 0 0 0 0 1 1 | w | mod | reg | r/m | |||||||||||
xchg | A,reg | A⇄reg 16bit | 1 0 0 1 0 | reg | ||||||||||||||
in | A,imm8 | A←imm8 | 1 1 1 0 0 1 0 | w | ||||||||||||||
in | A,DX | A←DX | 1 1 1 0 1 1 0 | w | ||||||||||||||
out | imm8,A | imm8←A | 1 1 1 0 0 1 1 | w | ||||||||||||||
out | DX,A | DX←A | 1 1 1 0 1 1 1 | w | ||||||||||||||
xlat | DS:[BX+AL]←AL | 1 1 0 1 0 1 1 1 | ||||||||||||||||
lea | reg,r/m | reg←実行アドレス r/m | 1 0 0 0 1 1 0 1 | mod | reg | r/m | ||||||||||||
lds | reg | reg←r/m[0],DS←r/m[2] | 1 1 0 0 0 1 0 1 | mod | reg | r/m | ||||||||||||
les | reg | reg←r/m[0],ES←r/m[2] | 1 1 0 0 0 1 0 0 | mod | reg | r/m | ||||||||||||
lahf | AH←flagの下位バイト(SZ,ZF,AF,PF,CF) | 1 0 0 1 1 1 1 1 | ||||||||||||||||
sahf | flagの下位バイト(SZ,ZF,AF,PF,CF)←AH | 1 0 0 1 1 1 1 0 | ||||||||||||||||
pushf | --SP,[SP]←flags | 1 0 0 1 1 1 0 0 | ||||||||||||||||
popf | flags←[SP],++SP | 1 0 0 1 1 1 0 1 | ||||||||||||||||
add | r/m,reg | r/m←r/m+reg | 0 0 0 0 0 0 | 0 | w | mod | reg | r/m | ||||||||||
add | reg,r/m | reg←reg+r/m | 0 0 0 0 0 0 | 1 | w | mod | reg | r/m | ||||||||||
add | r/m,imm | r/m←r/m+imm | 1 0 0 0 0 0 | S | w | mod | 0 0 0 | r/m | ||||||||||
add | imm | A←imm | 0 0 0 0 0 1 0 | w | ||||||||||||||
adc | r/m,reg | r/m←r/m+reg+C | 0 0 0 1 0 0 | 0 | w | mod | reg | r/m | ||||||||||
adc | reg,r/m | reg←reg+r/m+C | 0 0 0 1 0 0 | 1 | w | mod | reg | r/m | ||||||||||
adc | r/m,imm | r/m←r/m+imm+C | 1 0 0 0 0 0 | S | w | mod | 0 1 0 | r/m | ||||||||||
adc | imm | A←imm | 0 0 0 1 0 1 0 | w | ||||||||||||||
inc | r/m | r/m←r/m+1 | 1 1 1 1 1 1 1 | w | mod | 0 0 0 | r/m | |||||||||||
inc | reg | reg←reg+1 reg16 | 0 1 0 0 0 | reg | ||||||||||||||
aaa | 加算後のアンパックBCDの補正 | 0 0 1 1 0 1 1 1 | ||||||||||||||||
daa | 加算後のパックBCDの補正 | 0 0 1 0 0 1 1 1 | ||||||||||||||||
sub | r/m,reg | r/m←r/m-reg | 0 0 1 0 1 0 | 0 | w | mod | reg | r/m | ||||||||||
sub | reg,r/m | reg←reg-r/m | 0 0 1 0 1 0 | 1 | w | mod | reg | r/m | ||||||||||
sub | r/m,imm | r/m←r/m-imm | 1 0 0 0 0 0 | S | w | mod | 1 0 1 | r/m | ||||||||||
sub | imm | A←imm | 0 0 1 0 1 1 0 | w | ||||||||||||||
sbb | r/m,reg | r/m←r/m-reg-C | 0 0 0 1 1 0 | 0 | w | mod | reg | r/m | ||||||||||
sbb | reg,r/m | reg←reg-r/m-C | 0 0 0 1 1 0 | 1 | w | mod | reg | r/m | ||||||||||
sbb | r/m,imm | r/m←r/m-imm-C | 1 0 0 0 0 0 | S | w | mod | 0 1 1 | r/m | ||||||||||
sbb | imm | A←imm | 0 0 0 1 1 1 0 | w | ||||||||||||||
dec | r/m | r/m←r/m-1 | 1 1 1 1 1 1 1 | w | mod | 0 0 1 | r/m | |||||||||||
dec | reg | reg←reg-1 reg16 | 0 1 0 0 1 | reg | ||||||||||||||
neg | r/m | r/m←r/m-1 | 1 1 1 1 0 1 1 | w | mod | 0 1 1 | r/m | |||||||||||
cmp | r/m,reg | r/m-reg | 0 0 1 1 1 0 | 0 | w | mod | reg | r/m | ||||||||||
cmp | reg,r/m | reg-r/m | 0 0 1 1 1 0 | 1 | w | mod | reg | r/m | ||||||||||
cmp | r/m,imm | r/m-imm | 1 0 0 0 0 0 | S | w | mod | 1 1 1 | r/m | ||||||||||
cmp | imm | A-imm | 0 0 1 1 1 1 0 | w | ||||||||||||||
aas | 減算後のアンパックBCDの補正 | 0 0 1 1 1 1 1 1 | ||||||||||||||||
das | 減算後のパックBCDの補正 | 0 0 1 0 1 1 1 1 | ||||||||||||||||
mul | r/m | AX or DX:AX←AL or AX*r/m unaigned | 1 1 1 1 0 1 1 | w | mod | 1 0 0 | r/m | |||||||||||
imul | r/m | AX or DX:AX←AL or AX*r/m signed | 1 1 1 1 0 1 1 | w | mod | 1 0 1 | r/m | |||||||||||
div | r/m | AL or AX←AX or DX:AX % r/m unsigned AH or DX←DX:AX or AX % r/m unsigned | 1 1 1 1 0 1 1 | w | mod | 1 1 0 | r/m | |||||||||||
idiv | r/m | AL or AX←AX or DX:AX % r/m signed AH or DX←DX:AX or AX % r/m signed | 1 1 1 1 0 1 1 | w | mod | 1 1 1 | r/m | |||||||||||
aam | 乗算後のアンパックBCDの補正(AX) | 1 1 0 1 0 1 0 0 | 0 0 0 0 1 0 1 0 | |||||||||||||||
aad | 除算後のアンパックBCD値の補正(AL) | 1 1 0 1 0 1 0 1 | 0 0 0 0 1 0 1 0 | |||||||||||||||
cbw | AX←AL signed | 1 0 0 1 1 0 0 0 | ||||||||||||||||
cwd | DX:AX←AX signed | 1 0 0 1 1 0 0 1 | ||||||||||||||||
not | r/m | r/m←¬r/m | 1 1 1 1 0 1 1 | w | mod | 0 1 0 | r/m | |||||||||||
shl/sal | r/m | r/m←r/m<<1 論理左シフト | 1 1 0 1 0 0 1 | 0 | w | mod | 1 0 0 | r/m | ||||||||||
shl/sal | r/m,CL | r/m←r/m<<CL 論理左シフト | 1 1 0 1 0 0 1 | 1 | w | mod | 1 0 0 | r/m | ||||||||||
shr | r/m | r/m←r/m>>1 論理右シフト | 1 1 0 1 0 0 1 | 0 | w | mod | 1 0 1 | r/m | ||||||||||
shr | r/m,CL | r/m←r/m>>CL 論理右シフト | 1 1 0 1 0 0 1 | 1 | w | mod | 1 0 1 | r/m | ||||||||||
sar | r/m | r/m←r/m<<1 算術右シフト | 1 1 0 1 0 0 1 | 0 | w | mod | 1 1 1 | r/m | ||||||||||
sar | r/m,CL | r/m←r/m<<CL 算術右シフト | 1 1 0 1 0 0 1 | 1 | w | mod | 1 1 1 | r/m | ||||||||||
rol | r/m | 左ローテート | 1 1 0 1 0 0 1 | 0 | w | mod | 0 0 0 | r/m | ||||||||||
rol | r/m,CL | 左ローテオート | 1 1 0 1 0 0 1 | 1 | w | mod | 0 0 0 | r/m | ||||||||||
ror | r/m | 右ローテート | 1 1 0 1 0 0 1 | 0 | w | mod | 0 0 1 | r/m | ||||||||||
ror | r/m,CL | 右ローテート | 1 1 0 1 0 0 1 | 1 | w | mod | 0 0 1 | r/m | ||||||||||
rcl | r/m | キャーりを含めた左シフト | 1 1 0 1 0 0 1 | 0 | w | mod | 0 1 0 | r/m | ||||||||||
rcl | r/m,CL | キャーりを含めた左シフト | 1 1 0 1 0 0 1 | 1 | w | mod | 0 1 0 | r/m | ||||||||||
rcr | r/m | キャリーを含めた右シフト | 1 1 0 1 0 0 1 | 0 | w | mod | 0 1 1 | r/m | ||||||||||
rcr | r/m,CL | キャリーを含めた右シフト | 1 1 0 1 0 0 1 | 1 | w | mod | 0 1 1 | r/m | ||||||||||
and | r/m,reg | r/m←r/m∧reg | 0 0 1 0 0 0 | 0 | w | mod | reg | r/m | ||||||||||
and | reg,r/m | reg←reg∧r/m | 0 0 1 0 0 0 | 1 | w | mod | reg | r/m | ||||||||||
and | r/m,imm | r/m←r/m∧imm | 1 0 0 0 0 0 | S | w | mod | 1 0 0 | r/m | ||||||||||
and | imm | A←A∧imm | 0 0 1 0 0 1 0 | w | ||||||||||||||
test | r/m,reg | r/m∧reg | 0 0 0 1 0 0 | 0 | w | mod | reg | r/m | ||||||||||
test | reg,r/m | reg∧r/m | 0 0 0 1 0 0 | 1 | w | mod | reg | r/m | ||||||||||
test | r/m,imm | r/m∧imm | 1 0 1 0 1 0 0 | w | mod | 0 0 0 | r/m | |||||||||||
test | imm | A∧imm | 0 0 1 0 0 1 0 | w | ||||||||||||||
or | r/m,reg | r/m←r/m∨reg | 0 0 0 0 1 0 | 0 | w | mod | reg | r/m | ||||||||||
or | reg,r/m | reg←reg∨r/m | 0 0 0 0 1 0 | 1 | w | mod | reg | r/m | ||||||||||
or | r/m,imm | r/m←r/m∨imm | 1 0 0 0 0 0 | S | w | mod | 0 0 1 | r/m | ||||||||||
or | imm | A←A∨imm | 0 0 0 0 1 1 0 | w | ||||||||||||||
xor | r/m,reg | r/m←r/m⊻reg | 0 0 0 0 1 0 | 0 | w | mod | reg | r/m | ||||||||||
xor | reg,r/m | reg←reg⊻r/m | 0 0 0 0 1 0 | 1 | w | mod | reg | r/m | ||||||||||
xor | r/m,imm | r/m←r/m⊻imm | 1 0 0 0 0 0 | S | w | mod | 0 0 1 | r/m | ||||||||||
xor | imm | A←A⊻imm | 0 0 1 1 0 1 0 | w | ||||||||||||||
repnz/repne | ゼロでない間は次のストリング命令をリピート(CX回数) | 1 1 1 1 0 0 1 | 0 | |||||||||||||||
rep/repz/repe | 次のストリング命令をリピート(CX回数) | 1 1 1 1 0 0 1 | 1 | |||||||||||||||
movs | ES:[DI]←DS:[SI],オートインクリメント又はオートデクリメント | 1 0 1 0 0 1 0 | w | |||||||||||||||
cmps | DS:[SI]-ES:[DI],オートインクリメント又はオートデクリメント | 1 0 1 0 0 1 1 | w | |||||||||||||||
scas | AL or AX - ES:[DI],オートインクリメント又はオートデクリメント | 1 0 1 0 1 1 1 | w | |||||||||||||||
lods | AL or AX - DS:[SI],オートインクリメント又はオートデクリメント | 1 0 1 0 1 1 0 | w | |||||||||||||||
stos | ES:[DI]←AL or AX,オートインクリメント又はオートデクリメント | 1 0 1 0 1 0 1 | w | |||||||||||||||
call | near | 1 1 1 0 1 0 0 0 | ||||||||||||||||
call | r/m | r/m near | 1 1 1 1 1 1 1 1 | mod | 0 1 0 | r/m | ||||||||||||
call | far | 1 0 0 1 1 0 1 0 | ||||||||||||||||
call | r/m | r/m far | 1 1 1 1 1 1 1 1 | mod | 0 1 1 | r/m | ||||||||||||
jmp | near | 1 1 1 0 1 0 0 1 | ||||||||||||||||
jmp | short | 1 1 1 0 1 0 1 1 | ||||||||||||||||
jmp | r/m | r/m near | 1 1 1 1 1 1 1 1 | mod | 1 0 0 | r/m | ||||||||||||
jmp | far | 1 1 1 0 1 0 1 0 | ||||||||||||||||
jmp | r/m | r/m far | 1 1 1 1 1 1 1 1 | mod | 1 0 1 | r/m | ||||||||||||
ret | near return | 1 1 0 0 0 0 1 1 | ||||||||||||||||
ret | imm | near return,SP←SP+imm16 | 1 1 0 0 0 0 1 0 | |||||||||||||||
ret | far return | 1 1 0 0 1 0 1 1 | ||||||||||||||||
ret | imm | far return,SP←SP+imm16 | 1 1 0 0 1 0 1 0 | |||||||||||||||
j???? | short | near | 0 1 1 1 | cc | ||||||||||||||
loop | short | --CX,if cx≠0 jmp | 1 1 1 0 0 0 1 0 | |||||||||||||||
loopz/loope | short | --CX,if cx≠0 ∧ ZF=1 jmp | 1 1 1 0 0 0 | 1 | ||||||||||||||
loopnz/loopne | short | --CX,if cx≠0 ∧ ZF=0 jmp | 1 1 1 0 0 0 | 0 | ||||||||||||||
jcxz | short | if cx=0 jmp | 1 1 1 0 0 0 1 1 | |||||||||||||||
int | imm | immで指定した番号のソフトウェア割込み | 1 1 0 0 1 1 0 1 | |||||||||||||||
into | if ZO=1 int4 | 1 1 0 0 1 1 1 0 | ||||||||||||||||
iret | 割込み復帰 | 1 1 0 0 1 1 1 1 | ||||||||||||||||
clc | CF←0 | 1 1 1 1 1 0 0 0 | ||||||||||||||||
cmc | CF←¬CF | 1 1 1 1 0 1 0 1 | ||||||||||||||||
stc | CF←1 | 1 1 1 1 1 0 0 1 | ||||||||||||||||
cld | DF←0 ++ | 1 1 1 1 1 1 0 0 | ||||||||||||||||
std | DF←1 -- | 1 1 1 1 1 1 0 1 | ||||||||||||||||
cli | IF←0 | 1 1 1 1 1 0 1 0 | ||||||||||||||||
sti | IF←1 | 1 1 1 1 1 0 1 1 | ||||||||||||||||
hlt | HALT | 1 1 1 1 0 1 0 0 | ||||||||||||||||
nop | 1 0 0 1 0 0 0 0 | |||||||||||||||||
wait | 未処理のマスクされていない浮動小数点例外をチェックする | 1 0 0 1 1 0 1 1 | ||||||||||||||||
esc | FPU用の命令 アドレッシング等を8086が行う | 1 1 0 1 1 | X X X | mod | Y Y Y | r/m | ||||||||||||
lock | 後の命令の実行中LOCK信号をアサートする。 | 1 1 1 1 0 0 0 0 | ||||||||||||||||
ES:/CS:/SS:/DS: | セグメントオーバーライドプリフィックス | 0 0 1 | sreg | 1 1 0 |
∨Boolean OR
⊻Boolean exclusive OR
∧ Boolean AND
¬ Boolean Not
% 余
>> 右シフト
<< 左シフト
⇄ 交換
80286
特徴
80286は1982年に発表されIBM PC/ATに採用され広く普及。リアルモードは基本的に8086/8088と互換性あり。
セグメント方式のMMUを搭載し、プロテクトモード時には物理アドレス24bit/論理アドレス30bitに拡張している。
プロテクトモードを搭載し、4階層の特権レベル、メモリ保護機能、仮想記憶、タスクスイッチなどをサポート
80286-6 6MHz
80286-8 8MHz
80286-10 10MHz
80286-12 12.5MHz
最大バス速度 12.5Mbyte/Sec
134,000個のトランジスタ 1.5μmのNMOSプロセス
68ピン PLCC LCC PGA
番号 | 内容 |
0 | 除算エラー |
1 | 予約済みフォルト |
2 | NMI 割り込み |
3 | ブレークポイント INT 3命令 |
4 | オーバーフロー、INTO命令 |
5 | BOUNDの範囲外 |
6 | 無効オペコード(未定義オペコード) |
7 | デバイス使用不可(マス・コプロセッサがない)フォルトなし浮動小数点命令またはWAIT/FWAIT 命令 |
8 | ダブルフォルトアボートあり 例外、NMI またはINTR を生成できる任意の命令 |
9 | コプロセッサ・セグメント・オーバーラン(予約済み)フォルトなし浮動小数点命令 |
10 | 無効TSS フォルトありタスクスイッチまたはTSSアクセス |
11 | セグメント不在 |
12 | スタック・セグメント・フォルトフォルトありスタック操作およびSS レジスタのロード。 |
13 | 一般保護フォルトあり任意のメモリ参照およびその他の保護チェック |
一般命令
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
enter | imm1,imm2 | スタックフレームの作成 | 1 1 0 0 1 0 0 0 | |||||||||||||||
level | スタックフレームの解放 | 1 1 0 0 1 0 0 1 | ||||||||||||||||
pusha | AX,CX,DX,BX,SP,BP,SI,DIをプッシュ | 0 1 1 0 0 0 0 0 | ||||||||||||||||
popa | DI,SI,BP,SP,BX,DX,CX,AXをポップ | 0 1 1 0 0 0 0 1 | ||||||||||||||||
bound | reg,r/m | regがr/mで指定される上限及び下限の範囲かチェック | 0 1 1 0 0 0 1 0 | mod | reg | r/m | ||||||||||||
ins | ES:[DI]←IO DX,DI++ or DI-- | 0 1 1 0 1 1 0 | w | |||||||||||||||
outs | IO DX←DS[ESI],SI++ or SI-- | 0 1 1 0 1 1 1 | w | |||||||||||||||
imul | r/m,imm | r/m←r/m / imm | 0 1 1 0 1 0 | S | 1 | mod | reg | r/m | ||||||||||
push | imm | --SP,[SP]←imm | 0 1 1 0 1 0 | S | 0 | |||||||||||||
rcl | r/m,imm | CFを含む左ローテート | 1 1 0 0 0 0 0 | w | mod | 0 1 0 | r/m | |||||||||||
rcr | r/m,imm | CFを含む右ローテート | 1 1 0 0 0 0 0 | w | mod | 0 1 1 | r/m | |||||||||||
rol | r/m,imm | 左ローテート | 1 1 0 0 0 0 0 | w | mod | 0 0 0 | r/m | |||||||||||
ror | r/m,imm | 右ローテート | 1 1 0 0 0 0 0 | w | mod | 0 0 1 | r/m | |||||||||||
sal | r/m,imm | 算術左シフト | 1 1 0 0 0 0 0 | w | mod | 1 0 0 | r/m | |||||||||||
shl | r/m,imm | 論理左シフト | 1 1 0 0 0 0 0 | w | mod | 1 0 0 | r/m | |||||||||||
sar | r/m,imm | 算術右シフト | 1 1 0 0 0 0 0 | w | mod | 1 1 1 | r/m | |||||||||||
shr | r/m,imm | 論理右シフト | 1 1 0 0 0 0 0 | w | mod | 1 0 1 | r/m |
プロテクト命令
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
LGDT | r/m | GDTR←r/m | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 1 | mod | 0 1 0 | r/m | |||||||||||||||||||
SGDT | r/m | r/m←GDTR | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 1 | mod | 0 0 0 | r/m | |||||||||||||||||||
LIDT | r/m | IDTR←r/m | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 1 | mod | 0 1 1 | r/m | |||||||||||||||||||
SIDT | r/m | r/m←IDTR | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 1 | mod | 0 0 1 | r/m | |||||||||||||||||||
LLDT | r/m | LDTR←r/m | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 0 | mod | 0 1 0 | r/m | |||||||||||||||||||
SLDT | r/m | r/m←LDTR | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 0 | mod | 0 0 0 | r/m | |||||||||||||||||||
LAR | reg,r/m | reg←r/m セグメントディスクリプタのアクセス権をチェック | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 1 0 | mod | reg | r/m | |||||||||||||||||||
LSL | reg,r/m | reg←r/m セグメントディスクリプタのアクセス権をチェック | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 1 1 | mod | reg | r/m | |||||||||||||||||||
ARPL | r/m,reg,r/m | r/m to reg セグメント・セレクタのRPLフィールドを比較 | 0 1 1 0 0 0 1 1 | mod | reg | r/m | ||||||||||||||||||||
VERR | r/m | セグメントが読み取り可能かチェック | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 0 | mod | 1 0 0 | r/m | |||||||||||||||||||
VERW | reg,r/m | セグメントが書き込み可能かチェック | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 0 | mod | 1 0 1 | r/m | |||||||||||||||||||
LTR | r/m | タスクレジスタにロード | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 0 | mod | 0 1 1 | r/m | |||||||||||||||||||
STR | r/m | タスクレジスタからストア | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 0 | mod | 0 0 1 | r/m | |||||||||||||||||||
CLTS | CR0のTSフラグをクリア | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 1 1 0 | |||||||||||||||||||||||
LMSW | r/m | CR0のマシンステータスワード←r/m | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 1 | mod | 1 1 0 | r/m | |||||||||||||||||||
SMSW | r/m | r/m←CR0のマシンステータスワード | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 0 1 | mod | 1 0 0 | r/m |
80386
特徴
1985年にIntelから発表、80286の上位互換で32bitに拡張。アドレッシングモードも追加されている。
32bitレジスタへ拡張。
レジスタの直行性が増している。例えばEAXをポインターとして使用可能。
32bit命令の追加。(従来の16bit命令が、32bitに切り替わる。)
16MHz
20MHz
25MHz
33MHz
66MByte/Sec
アドレスバスが32bitに拡張。
物理アドレス32bit/論理アドレス32bit
仮想86モードの追加
ページング方式のMMU搭載
プロセスルール 1.5μm から 1μm
トランジスタ 27万5千個
16bitデーターバス、24bit外部アドレスバスの80386SXもある。
パッケージ
132ピンPGA・PQFP
100ピン PQFP
番号 | 内容 |
0 | 除算エラー |
1 | 予約済みフォルト |
2 | NMI 割り込み |
3 | ブレークポイント INT 3命令 |
4 | オーバーフロー、INTO命令 |
5 | BOUNDの範囲外 |
6 | 無効オペコード(未定義オペコード) |
7 | デバイス使用不可(マス・コプロセッサがない)フォルトなし浮動小数点命令またはWAIT/FWAIT 命令 |
8 | ダブルフォルトアボートあり 例外、NMI またはINTR を生成できる任意の命令 |
9 | コプロセッサ・セグメント・オーバーラン(予約済み)フォルトなし浮動小数点命令 |
10 | 無効TSS フォルトありタスクスイッチまたはTSSアクセス |
11 | セグメント不在 |
12 | スタック・セグメント・フォルトフォルトありスタック操作およびSS レジスタのロード。 |
13 | 一般保護フォルトあり任意のメモリ参照およびその他の保護チェック |
14 | ページフォルトフォルトあり任意のメモリ参照 |
15 | — (インテルがすでに予約済み。使用禁止)なし |
16 | x87 FPU 浮動小数点エラー(マスフォルト)フォルトなしx87 FPU 浮動小数点命令またはWAIT/FWAIT 命令 |
レジスタ
31 | 16 | 15 | 8 | 7 | 0 | |||||||
AH | A | X | AL | EAX | ||||||||
BH | B | X | BL | EBX | ||||||||
CH | C | X | CL | ECX | ||||||||
DH | D | X | DL | EDX | ||||||||
SI | ESI | |||||||||||
DI | EDI | |||||||||||
BP | EBP | |||||||||||
SP | ESP | |||||||||||
SP | ESP | |||||||||||
CS | ||||||||||||
SS | ||||||||||||
DS | ||||||||||||
ES | ||||||||||||
FS | ||||||||||||
GS | ||||||||||||
IP | EIP | |||||||||||
FLAGS | EFLAGS |
フラグ
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
RESERVED FOR INTEL | VM | RF |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | NT | IOPL | OF | DF | IF | TF | SF | ZF | x | AF | x | PF | x | CF |
また、アドレスも32bitモードになります。
オペランドサイズプリフィクスにより現在のデーターサイズを反転(16bit⇄32bit)されることができます。
アドレスサイズプリフィクスにより現在のアドレスサイズを反転(16bit⇄32bit)されることができます。
32bitアドレッシングモードが選択されているとき、 mod-r/mフィールドが示すアドレッシングモードが変更されています。 また、mod-r/mフィールドの値により更にs-i-bフィルードが追加されスケールドインデックス等が使用できます。
一般命令
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
mov | r/m,imm | r/m←imm | 1 1 0 0 0 1 1 | w | mod | 0 0 0 | r/m | |||||||||||||||||||
mov | sreg3,r/m | sreg3←r/m | 1 0 0 0 1 1 1 0 | mod | sreg3 | r/m | ||||||||||||||||||||
mov | r/m,serg3 | r/m←sreg3 | 1 0 0 0 1 1 0 0 | mod | sreg3 | r/m | ||||||||||||||||||||
movsx | reg,r/m | reg←r/m 上位は符号拡張 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 1 1 | w | mod | reg | r/m | ||||||||||||||||||
movzx | reg,r/m | reg←r/m 上位は0拡張 | 0 0 0 0 1 1 1 1 | 1 0 1 1 0 1 1 | w | mod | reg | r/m | ||||||||||||||||||
push | serg3 | --SP,[SP]←sreg3 | 0 0 0 0 1 1 1 1 | 1 0 | sreg3 | 0 0 0 | ||||||||||||||||||||
pop | serg3 | sreg3←[SP],SP++ | 0 0 0 0 1 1 1 1 | 1 0 | sreg3 | 0 0 1 | ||||||||||||||||||||
imul | reg,r/m | reg←reg / r/m | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 1 1 | mod | 0 0 0 | r/m | |||||||||||||||||||
imul | r/m,imm | reg←r/m / imm | 0 1 1 0 1 0 | S | 1 | mod | reg | r/m | ||||||||||||||||||
shld | r/m.reg.imm | r/mを上位、regを下位としてimm回左シフトをする。 | 0 0 0 0 1 1 1 1 | 1 0 1 0 0 1 0 0 | mod | 0 0 0 | r/m | |||||||||||||||||||
shld | r/m,reg,CL | r/mを上位、regを下位としてCL回左シフトをする。 | 0 0 0 0 1 1 1 1 | 1 0 1 0 0 1 0 1 | mod | 0 0 0 | r/m | |||||||||||||||||||
shrd | r/m,reg,imm | regを上位、r/mを下位としてimm回右シフトをする。 | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 0 0 | mod | 0 0 0 | r/m | |||||||||||||||||||
shrd | r/m,reg,CL | regを上位、r/mを下位としてCL回右シフトをする。 | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 0 1 | mod | 0 0 0 | r/m | |||||||||||||||||||
bsf | reg,r/m | reg←r/mの最も最下位の1のビットの位置 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 0 | w | mod | reg | r/m | ||||||||||||||||||
bsr | reg,r/m | reg←r/mの最も最上位の1のビットの位置 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 1 | w | mod | reg | r/m | ||||||||||||||||||
bt | r/m,imm | CF←r/mのimmビットの値 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 1 0 | mod | 1 0 0 | r/m | |||||||||||||||||||
bt | r/m,reg | CF←r/mのregビットの値 | 0 0 0 0 1 1 1 1 | 1 0 1 0 0 0 1 1 | mod | reg | r/m | |||||||||||||||||||
btc | r/m,imm | r/mのimmビット←¬CF←r/mのimmビットの値 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 1 0 | mod | 1 1 1 | r/m | |||||||||||||||||||
btc | r/m,reg | r/mのregビット←¬CF←r/mのregビットの値 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 1 1 | mod | reg | r/m | |||||||||||||||||||
btr | r/m,imm | CF←r/mのimmビットの値,r/mのimmビット←0 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 1 0 | mod | 1 1 0 | r/m | |||||||||||||||||||
btr | r/m,reg | CF←r/mのregビットの値,r/mのregビット←0 | 0 0 0 0 1 1 1 1 | 1 0 1 1 0 0 1 1 | mod | reg | r/m | |||||||||||||||||||
bts | r/m,imm | CF←r/mのimmビットの値,r/mのimmビット←1 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 1 0 | mod | 1 0 1 | r/m | |||||||||||||||||||
bts | r/m,reg | CF←r/mのregビットの値,r/mのregビット←1 | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 0 1 1 | mod | reg | r/m | |||||||||||||||||||
set???? | r/m | r/m←CC ? 1 : 0 | 0 0 0 0 1 1 1 1 | 1 0 0 1 | CC | mod | reg | r/m | ||||||||||||||||||
j???? | rel16/32 | 0 0 0 0 1 1 1 1 | 1 0 0 0 | CC | ||||||||||||||||||||||
lfs | reg | reg←r/m[0],FS←r/m[2] | 0 0 0 0 1 1 1 1 | 1 0 1 1 0 1 0 0 | mod | reg | r/m | |||||||||||||||||||
lgs | reg | reg←r/m[0],GS←r/m[2] | 0 0 0 0 1 1 1 1 | 1 0 1 1 0 1 0 1 | mod | reg | r/m | |||||||||||||||||||
lss | reg | reg←r/m[0],GS←r/m[2] | 0 0 0 0 1 1 1 1 | 1 0 1 1 0 0 1 0 | mod | reg | r/m | |||||||||||||||||||
Address Size Prefix | アドレスサイズの変更 16bit⇄32bit | 0 1 1 0 0 1 1 1 | ||||||||||||||||||||||||
Operand Size Prefix | オペランドサイズの変更 16bit⇄32bit | 0 1 1 0 0 1 1 0 | ||||||||||||||||||||||||
GS: | セグメントオーバーライドプリフィックス | 0 1 1 0 0 1 0 1 | ||||||||||||||||||||||||
FS: | セグメントオーバーライドプリフィックス | 0 0 1 1 0 1 1 0 |
プロテクト命令
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
mov | CRn,reg | CRn←reg | 0 0 0 0 1 1 1 1 | 0 0 1 0 0 0 1 0 | 1 1 | eee | reg | |||||||||||||||||||
mov | reg,CRn | reg←CRn | 0 0 0 0 1 1 1 1 | 0 0 1 0 0 0 0 0 | 1 1 | eee | reg | |||||||||||||||||||
mov | DRn,reg | DRn←reg | 0 0 0 0 1 1 1 1 | 0 0 1 0 0 0 1 1 | 1 1 | eee | reg | |||||||||||||||||||
mov | reg,DRn | reg←DRn | 0 0 0 0 1 1 1 1 | 0 0 1 0 0 0 0 1 | 1 1 | eee | reg | |||||||||||||||||||
mov | TRn,reg | TRn←reg | 0 0 0 0 1 1 1 1 | 0 0 1 0 0 1 1 0 | 1 1 | eee | reg | |||||||||||||||||||
mov | reg,TRn | reg←TRn | 0 0 0 0 1 1 1 1 | 0 0 1 0 0 1 0 0 | 1 1 | eee | reg |
80486
特徴
1989年、Intelが発表80386の上位互換
CPU周波数
16 MHz から 100 MHz
プロセスルール
1μm から 0.6μm
命令セット x86 (IA-32)
ソケット
Socket 1, Socket 2, Socket 3
パッケージ
196ピン PQFP
486DXはFPUを内蔵しており80387命令をサポート。(80486SXを除く)
内部クロックは外部クロックの2倍の速度で動作する、486DX2、3倍で動作可能な486DX4がある。
ほとんどの命令をワイヤードロジックとし、5段パイプライン等を搭載。
1次キャッシュ(8k/16k(DX4))を内蔵
480DX トランジスタ 120万個 25,33MHzは1μ、50 MHzは0.8μ
480DX2 トランジスタ 120万個 0.8μ 50MHz,66MHz
486DX4 トランジスタ 160万個 0.6μ 75MHz,100MHz(L1 4way 8k line size 16byte)
最高バス速度 50MHz -> 160MByte/Sec
0 | 除算エラー |
1 | 予約済みフォルト |
2 | NMI 割り込み |
3 | ブレークポイント INT 3命令 |
4 | オーバーフロー、INTO命令 |
5 | BOUNDの範囲外 |
6 | 無効オペコード(未定義オペコード) |
7 | デバイス使用不可(マス・コプロセッサがない)フォルトなし浮動小数点命令またはWAIT/FWAIT 命令 |
8 | ダブルフォルトアボートあり 例外、NMI またはINTR を生成できる任意の命令 |
9 | コプロセッサ・セグメント・オーバーラン(予約済み)フォルトなし浮動小数点命令 |
10 | 無効TSS フォルトありタスクスイッチまたはTSSアクセス |
11 | セグメント不在 |
12 | スタック・セグメント・フォルトフォルトありスタック操作およびSS レジスタのロード。 |
13 | 一般保護フォルトあり任意のメモリ参照およびその他の保護チェック |
14 | ページフォルトフォルトあり任意のメモリ参照 |
15 | — (インテルがすでに予約済み。使用禁止)なし |
16 | x87 FPU 浮動小数点エラー(マスフォルト)フォルトなしx87 FPU 浮動小数点命令またはWAIT/FWAIT 命令 |
17 | アライメント・チェックフォルトあり メモリ内の任意のデータ参照 |
追加命令
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
bswap | reg | regのバイトの並び順を逆にする | 0 0 0 0 1 1 1 1 | 1 1 0 0 1 | reg | |||||||||||||||||||||
xadd | r/m,reg | r/m⇄reg,r/m←r/m+reg | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 0 0 | w | mod | reg | r/m | ||||||||||||||||||
cmpxchg | r/m,reg | A==r/m ? ZF=1,r/m←reg:ZF=0,AL←r/m | 0 0 0 0 1 1 1 1 | 1 0 1 1 0 0 0 | w | mod | reg | r/m | ||||||||||||||||||
invd | 内部キャッシュをフラッシュ。外部キャッシュを開始させる。 | 0 0 0 0 1 1 1 1 | 0 0 0 0 1 0 0 0 | |||||||||||||||||||||||
wbinvd | ライトバックして内部キャッシュをフラッシュ。外部キャッシュのライトバックとフラッシュを開始させる。 | 0 0 0 0 1 1 1 1 | 0 0 0 0 1 0 0 1 | |||||||||||||||||||||||
invlpg | m | mのTBLページエントリーを無効 | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 1 | mod | reg | r/m |
Pentium
特徴
1993年にIntelから発表。 UとVパイプによる2ウェイのインオーダーのスーパースケーラ構造の最短5ステージパイプライン浮動小数点パイプラインは8段
64bitデーターバス
Socket 4
Socket 5
Socket 7
60 MHz から 300 MHz
FSB周波数
50 MHz から 66 MHz
トランジスタ 310万個
L1キャッシュ 命令8k,データー8k プロセスルール
0.8 μm から 0.25 μm
0 | 除算エラー |
1 | 予約済みフォルト |
2 | NMI 割り込み |
3 | ブレークポイント INT 3命令 |
4 | オーバーフロー、INTO命令 |
5 | BOUNDの範囲外 |
6 | 無効オペコード(未定義オペコード) |
7 | デバイス使用不可(マス・コプロセッサがない)フォルトなし浮動小数点命令またはWAIT/FWAIT 命令 |
8 | ダブルフォルトアボートあり 例外、NMI またはINTR を生成できる任意の命令 |
9 | コプロセッサ・セグメント・オーバーラン(予約済み)フォルトなし浮動小数点命令 |
10 | 無効TSS フォルトありタスクスイッチまたはTSSアクセス |
11 | セグメント不在 |
12 | スタック・セグメント・フォルトフォルトありスタック操作およびSS レジスタのロード。 |
13 | 一般保護フォルトあり任意のメモリ参照およびその他の保護チェック |
14 | ページフォルトフォルトあり任意のメモリ参照 |
15 | — (インテルがすでに予約済み。使用禁止)なし |
16 | x87 FPU 浮動小数点エラー(マスフォルト)フォルトなしx87 FPU 浮動小数点命令またはWAIT/FWAIT 命令 |
17 | アライメント・チェックフォルトあり メモリ内の任意のデータ参照 |
18 | マシンチェックアボートなしエラーコード(存在する場合)とソースはモデルに依存 |
追加命令
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
cmpxchg8b | r/m,reg | EDX:EAX==r/m ? ZF=1,r/m←ECX:EBX:ZF=0,EDX:EAX←r/m | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 1 1 | mod | 0 0 1 | r/m | |||||||||||||||||||
cpuid | EAXの値に応じてプロセッサの識別情報と機能情報を返す。 | 0 0 0 0 1 1 1 1 | 1 0 1 0 0 0 1 0 | |||||||||||||||||||||||
rdtsc | EDX:EAX←タイムスタンプカウンタ | 0 0 0 0 1 1 1 1 | 0 0 1 1 0 0 0 1 | |||||||||||||||||||||||
rdmsr | EDX:EAX←ECXで示すMSR | 0 0 0 0 1 1 1 1 | 0 0 1 1 0 0 1 0 | |||||||||||||||||||||||
wrmsr | ECXで示すMSR←EDX:EAX | 0 0 0 0 1 1 1 1 | 0 0 1 1 0 0 0 0 |
Pentium MMX
特徴
1997年IntelよりMMX対応プロセッサとして発表。FPUのレジスタをMMXに転用している。
スタック形式ではなくレジスタ番号で指定可能。
L1キャッシュが倍増
L1 inst 4way 16k line size 32byte
L1 data 4way 16k line size 32byte
命令一覧
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
EMMS | Empty MMX state.MMX ステートをクリア | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 1 1 1 | |||||||||||||||||||||||
MOVD | mmxreg,reg | ダブルワードを転送 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 1 0 | 1 1 | mmxreg | reg | |||||||||||||||||||
MOVD | mmxreg,reg | ダブルワードを転送 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 0 | 1 1 | mmxreg | reg | |||||||||||||||||||
MOVD | mmxreg,r/m | ダブルワードを転送 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 1 0 | mod | mmxreg | r/m | |||||||||||||||||||
MOVD | mmxreg,r/m | ダブルワードを転送 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 0 | mod | mmxreg | r/m | |||||||||||||||||||
MOVQ | mmxreg1,mmxreg2 | クワッドワードを転送 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 1 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
MOVQ | mmxreg1,mmxreg2 | クワッドワードを転送 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
MOVQ | mmxreg,r/m | クワッドワードを転送 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 1 1 | mod | mmxreg | r/m | |||||||||||||||||||
MOVQ | mmxreg,r/m | クワッドワードを転送 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 1 | mod | mmxreg | r/m | |||||||||||||||||||
PACKSSDW1 | mmxreg1,mmxreg2 | 符号付き飽和演算によりダブルワードをワードにパック | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 0 1 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
PACKSSDW1 | mmxreg,r/m | 符号付き飽和演算によりダブルワードをワードにパック | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 0 1 1 | mod | mmxreg | r/m | |||||||||||||||||||
PACKSSWB1 | mmxreg1,mmxreg2 | 符号付き飽和演算によりワードをバイトにパック | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 0 1 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
PACKSSWB1 | mmxreg,r/m | 符号付き飽和演算によりワードをバイトにパック | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 0 1 1 | mod | mmxreg | r/m | |||||||||||||||||||
PACKUSWB1 | mmxreg1,mmxreg2 | 符号なし飽和演算によりワードをバイトにパック | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 1 1 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
PACKUSWB1 | mmxreg,r/m | 符号なし飽和演算によりワードをバイトにパック | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 1 1 1 | mod | mmxreg | r/m | |||||||||||||||||||
PADD | mmxreg1,mmxreg2 | 整数を加算 | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 1 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PADD | mmxreg,r/m | 整数を加算 | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 1 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PADDS | mmxreg1,mmxreg2 | 符号付き飽和演算によりパックド符号付き整数を加算 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PADDS | mmxreg,r/m | 符号付き飽和演算によりパックド符号付き整数を加算 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PADDUS | mmxreg1,mmxreg2 | 符号なし飽和演算によりパックド符号なし整数を加算 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PADDUS | mmxreg,r/m | 符号なし飽和演算によりパックド符号なし整数を加算 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PAND | mmxreg1,mmxreg2 | ビットごとの AND(論理積)演算 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 1 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
PAND | mmxreg,r/m | ビットごとの AND(論理積)演算 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 1 1 | mod | mmxreg | r/m | |||||||||||||||||||
PANDN | mmxreg1,mmxreg2 | ビットごとの AND NOT(否定論理積)演算 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 1 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
PANDN | mmxreg,r/m | ビットごとの AND NOT(否定論理積)演算 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 1 1 | mod | mmxreg | r/m | |||||||||||||||||||
PCMPEQ | mmxreg1,mmxreg2 | パックを比較し、一致しているか判定 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 1 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PCMPEQ | mmxreg,r/m | パックを比較し、一致しているか判定 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 1 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PCMPGT | mmxreg1,mmxreg2 | パックド符号付き整数を比較し、大小関係を判定 | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 1 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PCMPGT | mmxreg,r/m | パックド符号付き整数を比較し、大小関係を判定 | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 1 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PMADDWD | mmxreg1,mmxreg2 | パックド整数を乗算および加算 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 0 1 | 1 1 | mmxreg | mmxreg | |||||||||||||||||||
PMADDWD | mmxreg,r/m | パックド整数を乗算および加算 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 0 1 | mod | mmxreg1 | r/m | |||||||||||||||||||
PMUL/HUW | mmxreg1,mmxreg2 | パックド符号付きワード整数を乗算してストア | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 0 0 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
PMUL/HUW | mmxreg,r/m | パックド符号付きワード整数を乗算してストア | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 0 0 | mod | mmxreg | r/m | |||||||||||||||||||
PMULHW | mmxreg1,mmxreg2 | パックド符号付き整数を乗算して上位結果をストア | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 0 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
PMULHW | mmxreg,r/m | パックド符号付き整数を乗算して上位結果をストア | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 0 1 | mod | mmxreg | r/m | |||||||||||||||||||
PMULLW | mmxreg1,mmxreg2 | パックド符号付き整数を乗算して下位結果をストア | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 0 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
PMULLW | mmxreg,r/m | パックド符号付き整数を乗算して下位結果をストア | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 0 1 | mod | mmxreg | r/m | |||||||||||||||||||
POR | mmxreg1,mmxreg2 | ビットごとの OR(論理和)演算 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 1 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
POR | mmxreg,r/m | ビットごとの OR(論理和)演算 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 1 1 | mod | mmxreg | r/m | |||||||||||||||||||
PSLL | mmxreg1,mmxreg2 | パックドを論理左シフト | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 0 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PSLL | mmxreg,r/m | パックドを論理左シフト | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 0 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PSLL | mmxreg,imm8 | パックドを論理左シフト | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 | gg | 1 1 | 1 1 0 | mmxreg | ||||||||||||||||||
PSRA | mmxreg1,mmxreg2 | パックドを算術右シフト | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PSRA | mmxreg,r/m | パックドを算術右シフト | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PSRA | mmxreg,imm8 | パックドを算術右シフト | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 | gg | 1 1 | 0 1 0 | mmxreg | ||||||||||||||||||
PSRL | mmxreg1,mmxreg2 | パックドを算術右シフト | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 0 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PSRL | mmxreg,r/m | パックドを算術右シフト | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 0 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PSRL | mmxreg,imm8,data | パックドを論理右シフト | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 | gg | 1 1 | 1 0 0 | mmxreg | ||||||||||||||||||
PSUB | mmxreg1,mmxreg2 | パックドを論理右シフト | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 0 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PSUB | mmxreg,r/m | パックドを論理右シフト | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 0 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PSUBS | mmxreg1,mmxreg2 | 符号付き飽和演算によりパックド符号付き整数を減算 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PSUBS | mmxreg,r/m | >符号付き飽和演算によりパックド符号付き整数を減算 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PSUBUS | mmxreg1,mmxreg2 | 符号なし飽和演算によりパックド符号なし整数を減算 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PSUBUS | mmxreg,r/m | 符号なし飽和演算によりパックド符号なし整数を減算 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PUNPCKH | mmxreg1,mmxreg2 | 上位をアンパック | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 0 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PUNPCKH | mmxreg,r/m | 上位をアンパック | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 0 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PUNPCKL | mmxreg1,mmxreg2 | 下位をアンパック | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 0 | gg | 1 1 | mmxreg1 | mmxreg2 | ||||||||||||||||||
PUNPCKL | mmxreg,r/m | 下位をアンパック | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 0 | gg | mod | mmxreg | r/m | ||||||||||||||||||
PXOR | mmxreg1,mmxreg2 | ビットごとの XOR(排他的論理和)演算 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 1 1 | 1 1 | mmxreg1 | mmxreg2 | |||||||||||||||||||
PXOR | mmxreg,r/m | ビットごとの XOR(排他的論理和)演算 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 1 1 | mod | mmxreg | r/m |
Pentium PRO
特徴
1995年、Intelから発表CPU周波数150 MHz から 200 MHz
FSB周波数
60 MHz から 66 MHz
L1 命令8k,データ8k
L2 256k
プロセスルール
0.50μm から 0.35μm
5.5Mトランジスタ
x86命令を複数の単純化した命令に分割して実行
デコーダは2個のシンプルデコーダと、1個のコンプレックスデコーダを備え命令発行ポートを5つ持ち、6つの実行ユニットを備える。
騰貴実行とアウトオブオーダーとレジスタリネーミングを備える。 分岐予測をサポート
2次キャッシュメモリにアクセスするための内部バスを、メインメモリにアクセスするための外部バスから分離
12ステージパイプライン
L1 命令8,データ8k L2 256k/512k
トランジスタ 550万個 (150MHzは 0.6μ,166MHz以降 0.35μ)
追加命令
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
cmovcc | reg,r/m | cc ? reg←r/m : nop | 0 0 0 0 1 1 1 1 | 0 1 0 0 | CC | mod | reg | r/m | ||||||||||||||||||
fcomi | ST(i) | EFLAGS(ZF,PF,CF)←ST(0)とST(i)を比較 | 1 1 0 1 1 | 0 1 1 | 1 1 1 1 0 | i | ||||||||||||||||||||
fcomip | ST(i) | EFLAGS(ZF,PF,CF)←ST(0)とST(i)を比較,++TOP | 1 1 0 1 1 | 1 1 1 | 1 1 1 1 0 | i | ||||||||||||||||||||
fucomi | ST(i) | EFLAGS(ZF,PF,CF)←ST(0)とST(i)を比較 | 1 1 0 1 1 | 0 1 1 | 1 1 1 0 0 | i | ||||||||||||||||||||
fucomip | ST(i) | EFLAGS(ZF,PF,CF)←ST(0)とST(i)を比較,++TOP | 1 1 0 1 1 | 1 1 1 | 1 1 1 0 0 | i | ||||||||||||||||||||
fcmovcc | ST(i) | cc ? ST(0)←ST(1) : fnop | 1 1 0 1 1 | 0 1 | C | 1 1 0 | C | i | ||||||||||||||||||
rdpmc | EDX:EAX←ECXで示される性能モニタリングカウンタ | 0 0 0 0 1 1 1 1 | 1 0 1 0 0 0 1 1 | |||||||||||||||||||||||
ud2 | 無効命令例外を発生させる | 0 0 0 0 1 1 1 1 | 0 0 0 0 1 0 1 1 |
Pentium II
特徴
1997年、Intelから発表。Pentium Proの改良版。MMXを搭載。
233MHz~450MHz
L1 命令16k,データ16k L2 512
7Mトランジスタ
追加命令
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
FXSAVE | r/m | x87 FPU,XMM,MXCSRをセーブ | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 1 0 | mod | 0 0 1 | r/m | |||||||||||||||||||
FXRSTOR | r/m | x87 FPU,XMM,MXCSRをリストア | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 1 0 | mod | 0 0 0 | r/m | |||||||||||||||||||
SYSENTER | 特権レベル0 のシステム・プロシージャまたはルーチンへの高速コール | 0 0 0 0 1 1 1 1 | 0 0 1 1 0 1 0 0 | |||||||||||||||||||||||
SYSEXIT | <特権レベル3 のユーザコードへの高速リターン/td> | 0 0 0 0 1 1 1 1 | 0 0 1 1 0 1 0 1 |
Pentium 3
特徴
1999年、Intelから発表。Pentium IIの改良版。SSEを追加。(128bit*8本のXMMレジスタ)
パックド単精度浮動小数点・MMXレジスタ内のパックド整数 450MHz~1.4GHz
L1 命令16k,データ16k
L2 256k
8.2Mトランジスタ
追加命令
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
ADDPS | xmmreg2,xmmreg1 | 単精度浮動小数点のSIMD加算 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
ADDPS | xmmreg,mem | 単精度浮動小数点のSIMD加算 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
ADDSS | xmmreg2,xmmreg1 | 単精度浮動小数点の加算 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
ADDSS | xmmreg,mem | 単精度浮動小数点の加算 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
ANDNPS | xmmreg2,xmmreg1 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||
ANDNPS | xmmreg,mem | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||
ANDPS | xmmreg2,xmmreg1 | 単精度のAND | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
ANDPS | xmmreg,mem | 単精度のAND | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
CMPPS | xmmreg,xmmreg,imm8 | 単精度浮動小数点のSIMD比較 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
CMPPS | xmmreg,mem,imm8 | 単精度浮動小数点のSIMD比較 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 0 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
CMPSS | xmmreg,xmmreg,imm8 | 単精度浮動小数点のSIMD比較 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
CMPSS | xmmreg,mem,imm8 | 単精度浮動小数点のSIMD比較 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
COMISS | xmmreg,xmmreg | 単精度浮動小数点の比較 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
COMISS | xmmreg,mem | 単精度浮動小数点の比較 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
CVTPI2PS | xmmreg2,xmmreg1 | 2つの符号付32bitを2つの単精度に変換 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
CVTPI2PS | xmmreg,mem | 2つの符号付32bitを2つの単精度に変換 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
CVTPS2PI | mmreg,xmmreg | 2つの単精度を2つの符号付32bitに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
CVTPS2PI | mmreg,mem | 2つの単精度を2つの符号付32bitに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 1 | mod | xmmreg | r/m | |||||||||||||||||||
CVTSI2SS | xmmreg1,r32 | 1つの符号付32bitを1つの単精度に変換 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg | r/m | |||||||||||||||||||
CVTSI2SS | xmmreg,mem | 1つの符号付32bitを1つの単精度に変換 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
CVTSS2SI | r32,xmmreg | 1つの単精度を1つの符号付32bitに変換 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | r/m | xmmreg | |||||||||||||||||||
CVTSS2SI | r32,mem | 1つの単精度を1つの符号付32bitに変換 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | r/m | r/m | |||||||||||||||||||
CVTTPS2PI | mmreg,xmmreg | 2つの単精度を切り捨てて2つの符号付32bitに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
CVTTPS2PI | mmreg,mem | 2つの単精度を切り捨てて2つの符号付32bitに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
CVTTSS2SI | r32,xmmreg | 1つの浮動小数点を1つの符号付32bitに変換 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | r/m | xmmreg1 | |||||||||||||||||||
CVTTSS2SI | r32,mem | 1つの浮動小数点を1つの符号付32bitに変換 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | r/m | r/m | |||||||||||||||||||
DIVPS | xmmreg,xmmreg | 単精度浮動小数点のSIMID除算 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
DIVPS | xmmreg,mem | 単精度浮動小数点のSIMID除算 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
DIVSS | xmmreg,xmmreg | 単精度浮動小数点のSIMID除算 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
DIVSS | xmmreg,mem | 単精度浮動小数点のSIMID除算 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
LDMXCSR | MXCSR,m32 | MXCSRへロード | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 1 0 | modA | 0 1 0 | mem | |||||||||||||||||||
MAXPS | xmmreg,xmmreg | 単精度の最大値を求める | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MAXPS | xmmreg,mem | 単精度の最大値を求める | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
MAXSS | xmmreg,xmmreg | 単精度の最大値を求める | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MAXSS | xmmreg,mem | 単精度の最大値を求める | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
MINPS | xmmreg,xmmreg | 単精度の最小値を求める | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MINPS | xmmreg,mem | 単精度の最小値を求める | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 1 | mod | xmmreg | r/m | |||||||||||||||||||
MINSS | xmmreg,xmmreg | 単精度の最小値を求める | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MINSS | xmmreg,mem | 単精度の最小値を求める | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
MOVAPS | xmmreg1,xmmreg2 | 単精度のSIMD移動 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 0 0 | 1 1 | xmmreg2 | xmmreg1 | |||||||||||||||||||
MOVAPS | xmmreg1,mem | 単精度のSIMD移動 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
MOVAPS | xmmreg2,xmmreg1 | 単精度のSIMD移動 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MOVAPS | mem,xmmreg1 | 単精度のSIMD移動 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 0 1 | mod | xmmreg | r/m | |||||||||||||||||||
MOVHLPS | xmmreg2,xmmreg1 | 2つの上位の単精度を2つの下位に移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MOVHPS | xmmreg,mem | 2つの単精度を移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
MOVHPS | mem,xmmreg | 2つの単精度を移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
MOVLHPS | xmmreg2,xmmreg1 | 2つの下位単精度を2つの上位単精度へ移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MOVLPS | xmmreg,mem | 2つの単精度を移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
MOVLPS | mem,xmmreg | 2つの単精度を移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
MOVMSKPS | r32,xmmreg | 4ビットの符号マスクを抽出しregに格納 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 0 0 | 1 1 | r/m | xmmreg | |||||||||||||||||||
MOVSS | xmmreg1,xmmreg2 | 単精度を移動 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg2 | xmmreg1 | |||||||||||||||||||
MOVSS | xmmreg1,mem | 単精度を移動 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
MOVSS | xmmreg2,xmmreg1 | 単精度を移動 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MOVSS | mem,xmmreg1 | 単精度を移動 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
MOVUPS | xmmreg1,xmmreg2 | 4つの単精度を移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 0 | 1 1 | xmmreg2 | xmmreg1 | |||||||||||||||||||
MOVUPS | xmmreg1,mem | 4つの単精度を移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
MOVUPS | xmmreg2,xmmreg1 | 4つの単精度を移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MOVUPS | mem,xmmreg1 | 4つの単精度を移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 1 | mod | xmmreg | r/m | |||||||||||||||||||
MULPS | xmmreg2,xmmreg1 | 4つの単精度の乗算 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MULPS | mem to xmmreg | 4つの単精度の乗算 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 0 1 | mod | xmmreg | r/m | |||||||||||||||||||
MULSS | xmmreg2,xmmreg1 | 1つの単精度の乗算 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MULSS | xmmreg,mem | 1つの単精度の乗算 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
ORPS | xmmreg2,xmmreg1 | 4つの単精度のOR | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
ORPS | xmmreg,mem | 4つの単精度のOR | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
RCPPS | xmmreg2,xmmreg1 | 4つの単精度の逆数 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
RCPPS | xmmreg,mem | 4つの単精度の逆数 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
RCPSS | xmmreg,xmmreg | 単精度の逆数 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
RCPSS | xmmreg,mem | 単精度の逆数 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
RSQRTPS | xmmreg2,xmmreg1 | 4つの単精度の平方根 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
RSQRTPS | xmmreg,mem | 4つの単精度の平方根 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
RSQRTSS | xmmreg2,xmmreg1 | 4つの単精度の平方根 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
RSQRTSS | xmmreg,mem | 4つの単精度の平方根 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
SHUFPS | xmmreg2,xmmreg1,imm | 4つの単精度をシャッフル | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
SHUFPS | xmmreg,mem,imm | 4つの単精度をシャッフル | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
SQRTPS | xmmreg2,xmmreg1 | 4つの単精度の平方根 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 0 1 | 1 1 | xmmreg1 | xmmreg | |||||||||||||||||||
SQRTPS | xmmreg,mem | 4つの単精度の平方根 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 0 1 | mod | xmmreg | r/m | |||||||||||||||||||
SQRTSS | xmmreg2,xmmreg1 | 単精度の平方根 | 0 1 0 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg | |||||||||||||||||||
SQRTSS | xmmreg,mem | 単精度の平方根 | 0 1 0 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
STMXCSR | mem,MXCSR | reg←MXCSR | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 1 0 | modA | 0 1 1 | mem | |||||||||||||||||||
SUBPS | xmmreg2,xmmreg1 | 4つの単精度の減算 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
SUBPS | xmmreg,mem | 4つの単精度の減算 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
SUBSS | xmmreg2,xmmreg1 | 4つの単精度の減算 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
SUBSS | xmmreg,mem | 4つの単精度の減算 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
UCOMISS | xmmreg2,xmmreg1 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||
UCOMISS | xmmreg,mem | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||
UNPCKHPS | xmmreg2,xmmreg1 | 単精度のインターリーブ | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
UNPCKHPS | xmmreg,mem | 単精度のインターリーブ | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 0 1 | mod | xmmreg | r/m | |||||||||||||||||||
UNPCKLPS | xmmreg2,xmmreg1 | 単精度のインターリーブ | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
UNPCKLPS | xmmreg,mem | 単精度のインターリーブ | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
XORPS | xmmreg2,xmmreg1 | 4つの単精度のXOR | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
XORPS | xmmreg,mem | 4つの単精度のXOR | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
PAVGB/PAVGW | mmreg,xmmreg | 平均 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
PAVGB/PAVGW | mm1 to mem | 平均 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
PAVGB/PAVGW | mmreg,mem | 平均 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
PAVGB/PAVGW | mem,mm1 | 平均 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
PEXTRW | reg32,xmmreg,imm8 | immによって指定されたワードを移動 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 0 1 | 1 1 | r/m | xmmreg | |||||||||||||||||||
PINSRW | mmreg,reg32,imm8 | 下位ワードをimmで指定されたワード位置に挿入 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 0 0 | 1 1 | xmmreg | reg | |||||||||||||||||||
PINSRW | mmreg,m16,imm8 | 下位ワードをimmで指定されたワード位置に挿入 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
PMAXSW | mmreg,xmmreg | 符号ワードの最大値 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
PMAXSW | mmreg,mem | 符号ワードの最大値 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
PMAXUB | mmreg,xmmreg | 符号無しバイトの最大値 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
PMAXUB | mmreg,Mmem | 符号無しバイトの最大値 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
PMINSW | mmreg,xmmreg | 符号ワードの最小値 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
PMINSW | mmreg,mem | 符号ワードの最小値 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
PMINUB | mmreg,xmmreg | 符号無しバイトの最小値 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
PMINUB | mmreg,mem | 符号無しバイトの最小値 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
PMOVMSKB | reg32,xmmreg | ビットマスクを作成 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 1 1 | 1 1 | r/m | xmmreg | |||||||||||||||||||
PMULHUW | mmreg,xmmreg | パックド符号無しワードの乗算 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
PMULHUW | mmreg,mem | パックド符号無しワードの乗算 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
PSADBW | mmreg,xmmreg | パックド符号無しバイトの差の絶対値を合計 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
PSADBW | mmreg,mem | パックド符号無しバイトの差の絶対値を合計 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 1 0 | mod | xmmreg | r/m | |||||||||||||||||||
PSHUFW | mmreg,xmmreg,imm8 | ワードのシャッフル | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
PSHUFW | mmreg,mem,imm8 | ワードのシャッフル | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 0 0 | mod | xmmreg | r/m | |||||||||||||||||||
MASKMOVQ | mmreg,xmmreg | バイトのマスクによりメモリに書き込む | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||
MOVNTPS | mem,xmmreg | 4つの単精度をキャッシュを使用せずに移動 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
MOVNTQ | mem,xmmreg | 4つの単精度をキャッシュを使用せずに移動 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||
PREFETCHT0 | m8 | キャッシュ全階層に移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 1 0 0 0 | modA | 0 0 1 | mem | |||||||||||||||||||
PREFETCHT1 | m8 | L1キャッシュに移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 1 0 0 0 | modA | 0 1 0 | mem | |||||||||||||||||||
PREFETCHT2 | m8 | L2キャッシュに移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 1 0 0 0 | modA | 0 1 1 | mem | |||||||||||||||||||
PREFETCHNTA | m8 | キャッシュに移動 | 0 0 0 0 1 1 1 1 | 0 0 0 1 1 0 0 0 | modA | 0 0 0 | mem | |||||||||||||||||||
SFENCE | ストア操作をシリアル化する | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 1 0 | 1 1 | 1 1 1 | 0 0 0 |
Pentium 4
Willamette
2000年にIntel発表。NetBurstマイクロアーキテクチャ
デコーダを1個備え、デコード済みのμopsを格納するトレースキャッシュを搭載
トレースキャッシュ12kμop
L1データ8kB
L2 256kB
4kエントリの分岐ターゲット配列
20段パイプライン
180nmプロセスルール
1.3GHz~2.0GHz
42Mトランジスタ
Socket 423
NetBurstでは、3 uOPs/サイクル
ALUは2個(倍速)
SSE2
パックド倍精度浮動小数点、パックド整数
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
ANDPD | xmmreg2,xmmreg1 | 浮動小数点間でのAND | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
ANDPD | xmmreg,r/m | 浮動小数点間でのAND | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CMPPD | xmmreg2,xmmreg1 | パックド倍精度浮動小数点の比較 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CMPPD | xmmreg,mem | パックド倍精度浮動小数点の比較 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CMPSD | xmmreg2,xmmreg1 | ダブルワードと比較 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CMPSD | xmmreg,r/m | ダブルワードと比較 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
COMISD | xmmreg2,xmmreg1 | 下位の倍精度浮動小数点値を比較 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
COMISD | xmmreg,r/m | 下位の倍精度浮動小数点値を比較 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTPI2PD | xmmreg2,xmmreg1 | 2つのパックド符号付32bitをパックド倍精度浮動小数点 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTPI2PD | xmmreg,r/m | 2つのパックド符号付32bitをパックド倍精度浮動小数点 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTPD2PI | xmmreg2,xmmreg1 | 2つのパックド倍精度小数点を2つのパックド符号32bitに変換 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTPD2PI | xmmreg,r/m | 2つのパックド倍精度小数点を2つのパックド符号32bitに変換 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTSI2SD | r32,xmmreg | 1つの符号付32bit整数を倍精度浮動小数点に変換する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 1 0 | 1 1 | xmmreg | r32 | ||||||||||||||||||||||||||
CVTSI2SD | xmmreg,r/m | 1つの符号付32bit整数を倍精度浮動小数点に変換する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTSD2SI | r32,xmmreg | 1つの倍精度浮動小数点をregに変換する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 1 | 1 1 | r32 | xmmreg | ||||||||||||||||||||||||||
CVTSD2SI | r32,r/m | 1つの倍精度浮動小数点をregに変換する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 1 | mod | r32 | r/m | ||||||||||||||||||||||||||
CVTTPD2PI | xmmreg2,xmmreg1 | 2つのパックド倍精度浮動小数点を2つの符号付32bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTTPD2PI | xmmreg,r/m | 2つのパックド倍精度浮動小数点を2つの符号付32bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTTSD2SI | r32,xmmreg | 1つの倍精度浮動小数点を符号付32bitに変換する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 0 | 1 1 | r32 | xmmreg | ||||||||||||||||||||||||||
CVTTSD2SI | r32,r/m | 1つの倍精度浮動小数点を符号付32bitに変換する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 0 0 | mod | r32 | r/m | ||||||||||||||||||||||||||
CVTPD2PS | xmmreg2,xmmreg1 | 2つの倍精度浮動小数点を2つの単精度浮動小数点に変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTPD2PS | xmmreg,r/m | 2つの倍精度浮動小数点を2つの単精度浮動小数点に変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTPS2PD | xmmreg2,xmmreg1 | 2つの単精度浮動小数点を2つ倍精度浮動小数点に変換する | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||
CVTPS2PD | xmmreg,r/m | 2つの単精度浮動小数点を2つ倍精度浮動小数点に変換する | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 0 | mod | xmmreg | r/m | |||||||||||||||||||||||||||
CVTSD2SS | xmmreg2,xmmreg1 | 1つの倍度浮動小数点を1つの単精度浮動小数点に変換する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTSD2SS | xmmreg,r/m | 1つの倍度浮動小数点を1つの単精度浮動小数点に変換する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTSS2SD | xmmreg2,xmmreg1 | 1つの単精度浮動小数点を1つの倍精度浮動小数点に変換する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTSS2SD | xmmreg,r/m | 1つの単精度浮動小数点を1つの倍精度浮動小数点に変換する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTPD2DQ | xmmreg2,xmmreg1 | 2つの倍精度浮動小数点を符号付32bitに変換する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTPD2DQ | xmmreg,r/m | 2つの倍精度浮動小数点を符号付32bitに変換する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTTPD2DQ | xmmreg2,xmmreg1 | 2つの倍精度浮動小数点を符号付32bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTTPD2DQ | xmmreg,r/m | 2つの倍精度浮動小数点を符号付32bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTDQ2PD | xmmreg2,xmmreg1 | 2つの符号付32bitを倍精度浮動小数点 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTDQ2PD | xmmreg,r/m | 2つの符号付32bitを倍精度浮動小数点 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTPS2DQ | xmmreg2,xmmreg1 | 4つの単精度浮動小数点を符号付32bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTPS2DQ | xmmreg,r/m | 4つの単精度浮動小数点を符号付32bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTTPS2DQ | xmmreg2,xmmreg1 | 4つの単精度浮動小数点を符号付32bitに変換する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CVTTPS2DQ | xmmreg,r/m | 4つの単精度浮動小数点を符号付32bitに変換する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
CVTDQ2PS | xmmreg2,xmmreg1 | 4つの符号付32bitを単精度浮動小数点に変換する | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||
CVTDQ2PS | xmmreg,r/m | 4つの符号付32bitを単精度浮動小数点に変換する | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 1 1 | mod | xmmreg | r/m | |||||||||||||||||||||||||||
DIVPD | xmmreg2,xmmreg1 | 倍精度浮動小数点の除算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
DIVPD | xmmreg,r/m | 倍精度浮動小数点の除算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
DIVSD | xmmreg2,xmmreg1 | 倍精度浮動小数点の除算 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
DIVSD | xmmreg,r/m | 倍精度浮動小数点の除算 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MAXPD | xmmreg2,xmmreg1 | 倍精度浮動小数点の最大値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MAXPD | xmmreg,r/m | 倍精度浮動小数点の最大値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MAXSD | xmmreg,xmmreg1 | 1つの倍精度浮動小数点の最大値 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MAXSD | xmmreg,r/m | 1つの倍精度浮動小数点の最大値 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MINPD | xmmreg2,xmmreg1 | 倍精度浮動小数点の最小値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MINPD | xmmreg,r/m | 倍精度浮動小数点の最小値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MINSD | xmmreg2,xmmreg1 | 倍精度浮動小数点の最小値 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MINSD | xmmreg,r/m | 倍精度浮動小数点の最小値 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVAPD | xmmreg2,xmmreg1 | 2つの倍精度浮動小数点を移動する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVAPD | xmmreg,rm | 2つの倍精度浮動小数点を移動する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0/ 1 0 1 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVAPD | xmmreg2,xmmreg1 | 2つの倍精度浮動小数点を移動する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVAPD | xmmreg,r/m | 2つの倍精度浮動小数点を移動する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVHPD | xmmreg,r/m | 倍精度浮動小数点を上位に移動 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVHPD | xmmreg,r/m | 倍精度浮動小数点を上位に移動 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVLPD | xmmreg,r/m | 倍精度浮動小数点を下位に移動 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVLPD | xmmreg,r/m | 倍精度浮動小数点を下位に移動 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVLPD | r/m,xmmreg | 倍精度浮動小数点を下位に移動 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 0 0 | 1 1 | r32 | xmmreg | ||||||||||||||||||||||||||
MOVSD | xmmreg2,xmmreg1 | 32bitを転送する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVSD | r/m,xmmreg | 32bitを転送する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVSD | xmmreg2,xmmreg1 | 32bitを転送する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVSD | xmmreg,r/m | 32bitを転送する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVUPD | xmmreg2,xmmreg1 | パックド倍精度浮動小数点を移動する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVUPD | r/m,xmmreg | パックド倍精度浮動小数点を移動する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVUPD | xmmreg2,xmmreg1 | パックド倍精度浮動小数点を移動する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVUPD | xmmreg,r/m | パックド倍精度浮動小数点を移動する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MULPD | パックド浮動小数点の乗算をする | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||
MULPD | xmmreg,r/m | パックド浮動小数点の乗算をする | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MULSD | xmmreg2,xmmreg1 | 下位の浮動小数点の乗算をする | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MULSD | xmmreg,r/m | 下位の浮動小数点の乗算をする | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
ORPD | xmmreg2,xmmreg1 | パックド倍精度浮動小数点のOR | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
ORPD | xmmreg,r/m | パックド倍精度浮動小数点のOR | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
SHUFPD | xmmreg2,xmmreg1,imm8 | シャッフルする | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
SHUFPD | xmmreg,r/m,imm8 | シャッフルする | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
SQRTPD | xmmreg2,xmmreg1 | パックド倍精度浮動小数点の平方根を求める | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
SQRTPD | xmmreg,r/m | パックド倍精度浮動小数点の平方根を求める | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
SQRTSD | xmmreg2,xmmreg1 | パックド倍精度浮動小数点の平方根を求める | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
SQRTSD | xmmreg,r/m | パックド倍精度浮動小数点の平方根を求める | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
SUBPD | xmmreg2,xmmreg1 | パックド倍精度浮動小数点の減算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
SUBPD | xmmreg,r/m | パックド倍精度浮動小数点の減算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
SUBSD | xmmreg2,xmmreg1 | パックド倍精度浮動小数点の減算 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
SUBSD | パックド倍精度浮動小数点の減算 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 1 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||||||||||
UCOMISD | xmmreg2,xmmreg1 | 下位の倍精度浮動小数点を比較する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
UCOMISD | xmmreg,r/m | 下位の倍精度浮動小数点を比較する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
UNPCKHPD | xmmreg2,xmmreg1 | 上位の倍精度浮動小数点をインターリーブする | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
UNPCKHPD | xmmreg,r/m | 上位の倍精度浮動小数点をインターリーブする | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
UNPCKLPD | xmmreg2,xmmreg1 | 下位の倍精度浮動小数点をインターリーブする | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
UNPCKLPD | xmmreg,r/m | 下位の倍精度浮動小数点をインターリーブする | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 1 0 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
XORPD | xmmreg2,xmmreg1 | 倍精度のXOR | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
XORPD | xmmreg,r/m | 倍精度のXOR | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 0 1 0 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVD | xmmreg,reg | 32bitを転送する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 1 0 | 1 1 | xmmreg | reg | ||||||||||||||||||||||||||
MOVD | reg,xmmreg | 32bitを転送する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 0 | 1 1 | xmmreg | reg | ||||||||||||||||||||||||||
MOVD | r/m,xmmreg | 32bitを転送する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVD | r/m,xmmreg | 32bitを転送する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVDQA | xmmreg2,xmmreg1 | 32bitを転送する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVDQA | xmmreg,reg | 32bitを転送する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVDQA | xmmreg,r/m | 32bitを転送する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVDQA | r/m,xmmreg | 32bitを転送する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVDQU | xmmreg2,xmmreg1 | アライメントの合わないダブル・クワッドワードを転送する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVDQU | xmmreg2,xmmreg1 | アライメントの合わないダブル・クワッドワードを転送する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVDQU | xmmreg,r/m | アライメントの合わないダブル・クワッドワードを転送する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVDQU | r/m,xmmreg | アライメントの合わないダブル・クワッドワードを転送する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVQ2DQ | xmmreg,mmreg | mmxのクワッドワードを下位ワードに移動する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 1 0 | 1 1 | xmmreg | mmreg | ||||||||||||||||||||||||||
MOVDQ2Q | mmreg,xmmreg | mmxのクワッドワードを下位ワードに移動する | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 1 0 | 1 1 | mmreg | mmreg | ||||||||||||||||||||||||||
MOVQ | xmmreg2,xmmreg1 | クワッドワードを移動する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVQ | xmmreg2,xmmreg1 | クワッドワードを移動する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVQ | xmmreg,r/m | クワッドワードを移動する | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 1 1 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVQ | r/m,xmmreg | クワッドワードを移動する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PACKSSDW | xmmreg2,xmmreg1 | 符号付飽和処理を使用して符号付32bit4つを符号付16bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PACKSSDW | xmmreg,r/m | 符号付飽和処理を使用して符号付32bit4つを符号付16bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PACKSSWB | 符号付飽和処理を使用して符号付16bit4つを符号付8bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||
PACKSSWB | xmmreg,r/m | 符号付飽和処理を使用して符号付16bit4つを符号付8bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PACKUSWB | xmmreg2,xmmreg1 | 符号付飽和処理を使用して符号付16bit4つを符号付8bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PACKUSWB | xmmreg,r/m | 符号付飽和処理を使用して符号付16bit4つを符号付8bitに変換する | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PADDQ | xmmreg2,xmmreg1 | クワッドワード整数を加算 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||
PADDQ | xmmreg,r/m | クワッドワード整数を加算 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||||||||||
PADDQ | xmmreg2,xmmreg1 | クワッドワード整数を加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PADDQ | xmmreg,r/m | クワッドワード整数を加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PADD | xmmreg2,xmmreg1 | ラップアラウンド付き加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 1 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PADD | ラップアラウンド付き加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 1 | gg | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PADDS | xmmreg2,xmmreg1 | ラップアラウンド付き符号付整数加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PADDS | xmmreg,r/m | ラップアラウンド付き符号付整数加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PADDUS | xmmreg2,xmmreg1 | ラップアラウンド付き符号無整数加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PADDUS | xmmreg,r/m | ラップアラウンド付き符号無整数加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PAND | AND | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||
PAND | xmmreg,r/m | AND | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PANDN | xmmreg,r/m | AND NOT | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 1 1 | 1 1 | xmmreg | xmmreg2 | ||||||||||||||||||||||||||
PANDN | xmmreg,r/m | AND NOT | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PAVGB | xmmreg2,xmmreg1 | 丸めを利用してパックド符号なしバイト整数の平均 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PAVGB | xmmreg,r/m | 丸めを利用してパックド符号なしバイト整数の平均 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PAVGW | xmmreg2,xmmreg1 | 丸めを利用してパックド符号なしワード整数の平均 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PAVGW | xmmreg,r/m | 丸めを利用してパックド符号なしワード整数の平均 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PCMPEQ | xmmreg2,xmmreg1 | 等しいか比較 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 1 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PCMPEQ | xmmreg,r/m | 等しいか比較 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 1 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PCMPGT | xmmreg2,xmmreg1 | 符号付の比較 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 1 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PCMPGT | xmmreg,r/m | 符号付の比較 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 1 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PEXTRW | r32,m,imm8 | 指定されたワードを抽出 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 0 1 | 1 1 | r32 | xmmreg | ||||||||||||||||||||||||||
PINSRW | xmmreg,reg,imm8 | 指定されたワード位置に挿入 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 0 0 | 1 1 | xmmreg | reg | ||||||||||||||||||||||||||
PINSRW | xmmreg,r/m,imm8 | 指定されたワード位置に挿入 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PMADD | xmmreg2,xmmreg1 | パックドワードの乗算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PMADD | xmmreg,r/m | パックドワードの乗算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PMAXSW | xmmreg2,xmmreg1 | 符号付ワード整数の最大値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PMAXSW | xmmreg,r/m | 符号付ワード整数の最大値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PMAXUB | xmmreg2,xmmreg1 | 符号無バイト整数の最大値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PMAXUB | xmmreg2,xmmreg1 | 符号無バイト整数の最大値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PMAXUB | xmmreg,r/m | 符号無バイト整数の最大値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PMINSW | xmmreg2,xmmreg1 | 符号付」ワード整数の最小値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PMINSW | xmmreg,r/m | 符号付」ワード整数の最小値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PMINUB | xmmreg2,xmmreg1 | 符号無バイト整数の最小値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PMINUB | xmmreg,r/m | 符号無バイト整数の最小値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PMOVMSKB | r32,xmmreg2 | バイトマスクの移動 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 1 1 | 1 1 | r32 | xmmreg | ||||||||||||||||||||||||||
PMULHUW | xmmreg2,xmmreg1 | パックド符号無しワード整数の乗算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PMULHUW | xmmreg,r/m | パックド符号無しワード整数の乗算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PMULHW | xmmreg2,xmmreg1 | 符号付ワード整数を乗算 上位に格納 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PMULHW | xmmreg,r/m | 符号付ワード整数を乗算 上位に格納 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PMULLW | xmmreg2,xmmreg1 | 符号付ワード整数を乗算 下位に格納 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PMULLW | xmmreg,r/m | 符号付ワード整数を乗算 下位に格納 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PMULUDQ | xmmreg2,xmmreg1 | 符号無ワード整数の乗算 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||
PMULUDQ | xmmreg,r/m | 符号無ワード整数の乗算 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||||||||||
PMULUDQ | xmmreg2,xmmreg1 | 符号無ワード整数の乗算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PMULUDQ | xmmreg,r/m | 符号無ワード整数の乗算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
POR | xmmreg2,xmmreg1 | OR | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
POR | xmmreg,r/m | OR | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PSADBW | xmmreg,xmmreg1 | 符号無しパックドバイト整数の差の絶対値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PSADBW | xmmreg,r/m | 符号無しパックドバイト整数の差の絶対値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PSHUFLW | xmmreg2,xmmreg1 | 下位ワードをシャッフル | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PSHUFLW | xmmreg,r/m | 下位ワードをシャッフル | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PSHUFHW | xmmreg2,xmmreg1 | 上位ワードをシャッフル | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PSHUFHW | xmmreg,r/m | 上位ワードをシャッフル | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PSHUFD | xmmreg2,xmmreg1 | ダブルワードをシャッフル | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PSHUFD | xmmreg,r/m | ダブルワードをシャッフル | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PSLLDQ | xmmreg | 左シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 1 1 | 1 1 | 1 1 1 | xmmreg | ||||||||||||||||||||||||||
PSLL | xmmreg,xmmreg1 | 左シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 0 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PSLL | xmmreg,r/m | 左シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 0 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PSLL | xmmreg2,xmmreg1 | 左シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 | gg | 1 1 | 1 1 0 | xmmreg | |||||||||||||||||||||||||
PSRA | xmmreg2,xmmreg1 | 右シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PSRA | xmmreg,r/m | 右シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 0 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PSRA | xmmreg | 右シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 | gg | 1 1 | 1 0 0 | xmmreg | |||||||||||||||||||||||||
PSRLDQ | xmmreg | 右シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 1 1 | 1 1 | 0 1 1 | xmmreg | ||||||||||||||||||||||||||
PSRL | xmmreg2,xmmreg1 | 右シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 0 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PSRL | xmmreg,r/m | 右シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 0 1 0 0 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PSRL | xmmreg | 右シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 1 0 0 | gg | 1 1 | 0 1 0 | xmmreg | |||||||||||||||||||||||||
PSUBQ | xmmreg2,xmmreg | クワッドワード整数の減算 | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||
PSUBQ | xmmreg,r/m | クワッドワード整数の減算 | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 0 1 1 | mod | xmmreg | r/m | |||||||||||||||||||||||||||
PSUBQ | xmmreg2,xmmreg1 | クワッドワード整数の減算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PSUBQ | xmmreg,r/m | クワッドワード整数の減算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PSUB | xmmreg2,xmmreg1 | パックドバイト整数の減算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 0 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PSUB | xmmreg,r/m | パックドバイト整数の減算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 1 0 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PSUBS | xmmreg2,xmmreg1 | 符号付パックドバイトの減算 飽和付き | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PSUBS | xmmreg,r/m | 符号付パックドバイトの減算 飽和付き | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 0 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PSUBUS | xmmreg2,xmmreg1 | 符号無パックドバイトの減算 飽和付き | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 | gg | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PSUBUS | xmmreg,r/m | 符号無パックドバイトの減算 飽和付き | 0 0 0 0 1 1 1 1 | 1 1 0 1 1 0 | gg | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PUNPCKH | xmmreg2,xmmreg1 | 上位ワードをインターリーブ | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 0 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PUNPCKH | xmmreg,r/m | 上位ワードをインターリーブ | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 0 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PUNPCKHQDQ | xmmreg2,xmmreg1 | 上位ワードをインターリーブ | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PUNPCKHQDQ | xmmreg | 上位ワードをインターリーブ | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PUNPCKL | xmmreg2,xmmreg1 | 下位ワードをインターリーブ | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 0 | gg | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||
PUNPCKL | xmmreg,r/m | 下位ワードをインターリーブ | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 0 0 | gg | mod | xmmreg | r/m | |||||||||||||||||||||||||
PUNPCKLQDQ | xmmreg2,xmmreg1 | 下位ワードをインターリーブ | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PUNPCKLQDQ | xmmreg,r/m | 下位ワードをインターリーブ | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 1 1 0 1 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
PXOR | xmmreg2,xmmreg1 | XOR | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
PXOR | xmmreg,r/m | XOR | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 1 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MASKMOVDQU | xmmreg2,xmmreg1 | バイトマスクを使用してメモリ・ロケーションに書き込む | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
CLFLUSH | r/m | キャッシュ・ラインをフラッシュ | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 1 0 | mod | 1 1 1 | r/m | |||||||||||||||||||||||||||
MOVNTPD | xmmreg,r/m | パックド倍精度浮動小数点を移動 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 0 1 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVNTDQ | xmmreg,r/m | キャッシュを使用せずに移動 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 0 0 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVNTI | r/m,reg | キャッシュを使用せずに32bit整数を移動 | 0 0 0 0 1 1 1 1 | 1 1 0 0 0 0 1 1 | mod | reg | r/m | |||||||||||||||||||||||||||
PAUSE | スピンループのヒントを提供 | 1 1 1 1 0 0 1 1 | 1 0 0 1 0 0 0 0 | 1 1 1 1 0 0 1 1 | 1 0 0 1 0 0 0 0 | |||||||||||||||||||||||||||||
LFENCE | ロード操作をシリアル化 | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 1 0 | 1 0 1 0 1 1 1 0 | ||||||||||||||||||||||||||||||
MFENCE | ロード操作とストア操作をシリアル化 | 0 0 0 0 1 1 1 1 | 1 0 1 0 1 1 1 0 | 1 1 1 1 0 0 0 0 |
Prescott
90nmプロセスルールSSE3
Intel(R) Pentium(R) 4 CPU 3.40GHzの例
L1 Trace 8way 12kμOps line size 64byte
L1 Data 8way 16k line size 64byte
L2 8way 2Mbyte line size 64byte
31段パイプライン
Hyper-Threading搭載
x64搭載
データー及びアドレスを64bit化汎用レジスタの追加 R8~R15 8本
128bitのXMMレジスタの追加 8本
Long 64bit-modeにするとアドレスが64bitになる。
REXプリフィクスで64bitを指定すると
追加命令
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
SWAPGS | GSレジスタのベース値を交換 | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 1 | 1 1 1 1 1 0 0 0 | ||||||||||||||||||||||
SYSCALL | 高速なシステムコール | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 1 0 1 | |||||||||||||||||||||||
SYSRET | 高速なシステムコールからの復帰 | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 1 1 1 |
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
MONITOR | eax, ecx, edx | アドレス・モニタリング・ハードウェアを使用可能な状態にする | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 1 | 1 1 0 0 1 0 0 0 | |||||||||||||||||||||||||||||
MWAIT | eax, ecx, edx | 最適化へのヒント | 0 0 0 0 1 1 1 1 | 0 0 0 0 0 0 0 1 | 1 1 0 0 1 0 0 1 | |||||||||||||||||||||||||||||
FISTTP | m int16bit,ST++ | STを符号付整数(切り捨て)てストアしポップ | 1 1 0 1 1 1 1 1 | modA | 0 0 1 | r/m | ||||||||||||||||||||||||||||
FISTTP | m int32bit,ST++ | STを符号付整数(切り捨て)てストアしポップ | 1 1 0 1 1 0 1 1 | modA | 0 0 1 | r/m | ||||||||||||||||||||||||||||
FISTTP | m int64bit,ST++ | STを符号付整数(切り捨て)てストアしポップ | 1 1 0 1 1 1 0 1 | modA | 0 0 1 | r/m | ||||||||||||||||||||||||||||
LDDQU | xmm,r/m | ロード | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 1 1 1 1 0 0 0 0 | modA | xmmreg | r/m | ||||||||||||||||||||||||||
MOVDDUP | xmmreg,r/m | 下位の倍精度浮動小数点を移動複製 | 1 1 1 1 0 0 1 0 | 0 0 0 0 1 1 1 1 | 0 0 0 0 1 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVSHDUP | xmmreg2,xmmreg1 | 上位の単精度浮動小数点を移動複製 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 0 0 0 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVSHDUP | xmmreg2,r/m | 上位の単精度浮動小数点を移動複製 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 0 0 0 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||
MOVSLDUP | xmmreg2,xmmreg1 | パックド単精度データを下位の要素を複製 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 0 0 0 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||
MOVSLDUP | xmmreg,r/m | パックド単精度データを下位の要素を複製 | 1 1 1 1 0 0 1 1 | 0 0 0 0 1 1 1 1 | 0 0 0 0 1 0 1 0 | mod | xmmreg | r/m |
Intel Core 2
Conroe
2007年、Intelから発表。65nmプロセスルール
1.06~3.33GHz
LGA775
4個のデコーダ
ALUは3個
6つの命令発行ポート
14段パイプライン
デュアルコア
Intel(R) Core(TM)2 CPU 6320 @ 1.86GHzの例
L1 inst 8way 32k*2 line size 64byte
L1 data 8way 32k*2 line size 64byte
L2 16way 4Mbyte line size 64byte
SSSE3を追加
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
PABSB | mmreg2,mmreg1 | パックドバイトの絶対値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 0 0 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PABSB | r/m,mmreg | パックドバイトの絶対値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 0 0 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PABSB | xmmreg2,xmmreg1 | パックドバイトの絶対値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PABSB | xmmreg,r/m | パックドバイトの絶対値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PABSD | mmreg2,mmreg1 | パックドダブルワードの絶対値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 1 0 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PABSD | r/m,mmreg | パックドダブルワードの絶対値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 1 0 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PABSD | xmmreg2,xmmreg1 | パックドダブルワードの絶対値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PABSD | xmmreg,r/m | パックドダブルワードの絶対値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 1 0 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PABSW | mmreg2,mmreg1 | パックドワードの絶対値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 0 1 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PABSW | r/m,mmreg | パックドワードの絶対値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 0 1 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PABSW | xmmreg2,xmmreg1 | パックドワードの絶対値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PABSW | xmmreg,r/m | パックドワードの絶対値 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 1 1 0 1 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PALIGNR | mmreg2,mmreg1,imm8 | バイト右シフト | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 1 1 1 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PALIGNR | mmreg,r/m,imm8 | バイト右シフト | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 1 1 1 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PALIGNR | xmmreg2,xmmreg1 | バイト右シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PALIGNR | xmmreg2,xmmreg1 | バイト右シフト | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PHADDD | mmreg2,mmreg1 | パックドダブルワード水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 1 0 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PHADDD | r/m,mmreg | パックドダブルワード水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 1 0 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PHADDD | xmmreg2,xmmreg1 | パックドダブルワード水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PHADDD | xmmreg ,mod | パックドダブルワード水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 1 0 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PHADDSW | mmreg2,mmreg1 | パックドワード飽和付水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 1 1 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PHADDSW | r/m,mmreg | パックドワード飽和付水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 1 1 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PHADDSW | xmmreg2,xmmreg1 | パックドワード飽和付水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PHADDSW | xmmreg,r/m | パックドワード飽和付水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 1 1 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PHADDW | mmreg2,mmreg1 | パックドワード水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 0 1 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PHADDW | r/m,mmreg | パックドワード水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 0 1 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PHADDW | xmmreg2,xmmreg1 | パックドワード水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PHADDW | r/m,mmreg | パックドワード水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 0 0 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PHADDW | xmmreg,r/m | パックドワード水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 0 1 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PHSUBD | mmreg2,mmreg1 | パックドダブルワード水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 1 0 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PHSUBD | r/m,mmreg | パックドダブルワード水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 1 0 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PHSUBD | xmmreg2,xmmreg1 | パックドダブルワード水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PHSUBD | xmmreg,r/m | パックドダブルワード水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PHSUBSW | mmreg2,mmreg1 | パックドワード飽和付水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 1 1 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PHSUBSW | r/m,mmreg | パックドワード飽和付水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 1 1 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PHSUBSW | xmmreg1,r/m | パックドワード飽和付水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PHSUBSW | xmmreg,r/m | パックドワード飽和付水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 1 1 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PHSUBW | mmreg2,mmreg1 | パックドワード飽和付水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 0 1 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PHSUBW | r/m,mmreg | パックドワード飽和付水平加算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 0 1 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PHSUBW | xmmreg2,xmmreg1 | パックドワード飽和付水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PHSUBW | xmmreg,r/m | パックドワード飽和付水平加算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 0 1 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PMADDUBSW | mmreg2,mmreg1 | パックドバイト積和 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 0 0 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PMADDUBSW | r/m,mmreg | パックドバイト積和 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 0 0 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PMADDUBSW | xmmreg3,xmmreg1 | パックドバイト積和 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PMADDUBSW | xmmreg,r/m | パックドバイト積和 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 1 0 0 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PMULHRSW | mmreg2,mmreg1 | パックドワードの乗算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 1 0 1 1 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PMULHRSW | r/m,mmreg | パックドワードの乗算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 1 0 1 1 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PMULHRSW | xmmreg2,xmmreg1 | パックドワードの乗算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PMULHRSW | xmmreg,r/m | パックドワードの乗算 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 1 0 1 1 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PSHUFB | mmreg2,mmreg1 | パックドバイトのシャッフル | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 0 0 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PSHUFB | r/m,mmreg | パックドバイトのシャッフル | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 0 0 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PSHUFB | xmmreg2,xmmreg1 | パックドバイトのシャッフル | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PSHUFB | xmmreg,r/m | パックドバイトのシャッフル | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 0 0 0 0 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PSIGNB | mmreg2,mmreg1 | パックドバイト符号処理 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 1 0 0 0 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PSIGNB | r/m,mmreg | パックドバイト符号処理 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 1 0 0 0 | mod | mmreg | r/m | ||||||||||||||||||||||||||||||||||
PSIGNB | xmmreg2,xmmreg1 | パックドバイト符号処理 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 1 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | |||||||||||||||||||||||||||||||||
PSIGNB | xmmreg ,r/m | パックドバイト符号処理 | 0 1 1 0 0 1 1 0 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 1 0 0 0 | mod | xmmreg | r/m | |||||||||||||||||||||||||||||||||
PSIGND | mmreg2,mmreg1 | パックドダブルワード符号処理 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 1 0 1 0 | 1 1 | mmreg1 | mmreg2 | ||||||||||||||||||||||||||||||||||
PSIGND | r/m,mmreg | パックドダブルワード符号処理 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 0 1 0 1 0 | mod | mmreg | r/m |
Penryn
45nm プロセルルール2007年にIntelから発表
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHzの例
クワッドコア
L1 inst 8way 32k*4 line size 64byte
L1 data 8way 32k*4 line size 64byte
L2 8way 2Mbyte line size 64byte
SSE 4.1を追加
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
BLENDPD | xmmreg2,xmmreg1 | 倍精度浮動小数点のブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
BLENDPD | r/m,xmmreg | 倍精度浮動小数点のブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
BLENDPS | xmmreg2,xmmreg1 | 単精度浮動小数点のブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
BLENDPS | r/m,xmmreg | 単精度浮動小数点のブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
BLENDVPD | xmmreg2,xmmreg1 | 倍精度浮動小数点の可変ブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 0 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
BLENDVPD | r/m,xmmreg | 倍精度浮動小数点の可変ブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 0 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
BLENDVPS | xmmreg2,xmmreg1 | 単精度浮動小数点の可変ブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
BLENDVPS | r/m,xmmreg | 単精度浮動小数点の可変ブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 0 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
DPPD | xmmreg2,xmmreg1,imm8 | パックド倍精度浮動小数点のドット積 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 0 0 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
DPPD | r/m,xmmreg,imm8 | パックド倍精度浮動小数点のドット積 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 0 0 0 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
DPPS | xmmreg2,xmmreg1,imm8 | パックド単精度浮動小数点のドット積 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 0 0 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
DPPS | r/m,xmmreg,imm8 | パックド単精度浮動小数点のドット積 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 0 0 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
EXTRACTPS | xmmreg,reg,imm8 | パックド単精度浮動小数点を抽出する | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 0 1 1 1 | 1 1 | reg | xmmreg | ||||||||||||||||||||||||||||||||||
EXTRACTPS | xmmreg,r/m,imm8 | パックド単精度浮動小数点を抽出する | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 0 1 1 1 | mod | r/m | xmmreg | ||||||||||||||||||||||||||||||||||
INSERTPS | xmmreg2,xmmreg1,imm8 | パックド単精度浮動小数点の挿入 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 1 0 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
INSERTPS | r/m,xmmreg,imm8 | パックド単精度浮動小数点の挿入 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 1 0 0 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
MOVNTDQA | xmmreg2,r/m | キャッシュを介さずにパックドクワッドワードを転送 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 1 0 1 0 | 1 1 | r/m | xmmreg2 | ||||||||||||||||||||||||||||||||||
MPSADBW | xmmreg2,xmmreg1,imm8 | SAD(Sum of Absolute Difference) | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 0 0 0 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
MPSADBW | r/m,xmmreg,imm8 | SAD(Sum of Absolute Difference) | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 0 0 0010 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PACKUSDW | xmmreg2,xmmreg1 | 符号無ダブルワードを飽和付で符号無ワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PACKUSDW | r/m,xmmreg | 符号無ダブルワードを飽和付で符号無ワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 1 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PBLENDVB | xmmreg2,xmmreg1 | パックドバイト可変ブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PBLENDVB | r/m,xmmreg | パックドバイト可変ブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PBLENDVB | xmmreg2,xmmreg1,imm8 | パックドバイト可変ブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PBLENDVB | r/m,xmmreg,imm8 | パックドバイト可変ブレンド | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PCMPEQQ | xmmreg2,xmmreg1 | パックドクワッドワードの比較 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 1 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PCMPEQQ | r/m,xmmreg | パックドクワッドワードの比較 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 1 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PEXTRB | xmmreg,reg,imm8 | パックドバイトを抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 0 1 0 0 | 1 1 | reg | xmmreg | ||||||||||||||||||||||||||||||||||
PEXTRB | xmmreg,r/m,imm8 | パックドバイトを抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 0 1 0 0 | mod | r/m | xmmreg | ||||||||||||||||||||||||||||||||||
PEXTRD | xmmreg,reg,imm8 | パックドダブルワードを抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 0 1 1 0 | 1 1 | reg | xmmreg | ||||||||||||||||||||||||||||||||||
PEXTRD | xmmreg,r/m,imm8 | パックドダブルワードを抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 0 1 1 0 | mod | r/m | xmmreg | ||||||||||||||||||||||||||||||||||
PEXTRQ | xmmreg,reg,imm8 | パックドクワッドワードを抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 0 1 1 0 | 1 1 | reg | xmmreg | ||||||||||||||||||||||||||||||||||
PEXTRQ | xmmreg,r/m,imm8 | パックドクワッドワードを抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 01 1 0 | mod | r/m | xmmreg | ||||||||||||||||||||||||||||||||||
PEXTRW | xmmreg,reg,imm8 | パックドワードの抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 0 1 0 1 | 1 1 | reg | xmmreg | ||||||||||||||||||||||||||||||||||
PEXTRW | xmmreg,r/m,imm8 | パックドワードの抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 1 0 1 0 1 | mod | r/m | xmmreg | ||||||||||||||||||||||||||||||||||
PHMINPOSUW | xmmreg2,xmmreg1 | パックドワードから最小値を探す | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 1 0 0 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PHMINPOSUW | r/m,xmmreg | パックドワードから最小値を探す | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 1 0 0 0 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PINSRB | reg,xmmreg,imm8 | パックドバイトを抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 1 0 0 0 0 0 | 1 1 | xmmreg | reg | ||||||||||||||||||||||||||||||||||
PINSRB | r/m,xmmreg,imm8 | パックドバイトを抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 1 0 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PINSRD | reg,xmmreg,imm8 | パックドダブルワードの抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 1 0 0 0 1 0 | 1 1 | xmmreg | reg | ||||||||||||||||||||||||||||||||||
PINSRD | r/m,xmmreg,imm8 | パックドダブルワードの抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 1 0 0 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PINSRQ | reg,xmmreg,imm8 | パックドクワッドワードの抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 1 0 0 0 1 0 | 1 1 | xmmreg | reg | ||||||||||||||||||||||||||||||||||
PINSRQ | reg,xmmreg,imm8 | パックドクワッドワードの抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 1 0 0 0 1 0 | 1 1 | xmmreg | reg | ||||||||||||||||||||||||||||||||||
PINSRQ | r/m,xmmreg,imm8 | パックドクワッドワードの抽出 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 1 0 0 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMAXSB | xmmreg2,xmmreg1 | パックドバイトの最大値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMAXSB | r/m,xmmreg | パックド符号有バイトの最大値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMAXSD | xmmreg2,xmmreg1 | パックド符号有ダブルワードの最大値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMAXSD | r/m,xmmreg | パックド符号有ダブルワードの最大値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMAXUD | xmmreg2,xmmreg1 | パックド符号無ダブルワードの最大値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMAXUD | r/m,xmmreg | パックド符号無ダブルワードの最大値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMAXUW | xmmreg2,xmmreg1 | パックド符号無ワードの最大値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 1 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMAXUW | r/m,xmmreg | パックド符号無ワードの最大値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 1 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMINSB | xmmreg2,xmmreg1 | パックド符号有バイトの最小値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMINSB | r/m,xmmreg | パックド符号有バイトの最小値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMINSD | xmmreg2,xmmreg1 | パックド符号有ダブルワードの最小値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMINSD | r/m,xmmreg | パックド符号有ダブルワードの最小値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMINUD | xmmreg2,xmmreg1 | パックド符号無ダブルワードの最小値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMINUD | r/m,xmmreg | パックド符号無ダブルワードの最小値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMINUW | xmmreg2,xmmreg1 | パックド符号無ワードの最小値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMINUW | r/m,xmmreg | パックド符号無ワードの最小値 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 1 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVSXBD | xmmreg2,xmmreg1 | パックド符号付バイトをダブルワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVSXBD | r/m,xmmreg | パックド符号付バイトをダブルワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVSXBQ | xmmreg2,xmmreg1 | パックド符号付バイトをクワッドワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVSXBQ | r/m,xmmreg | パックド符号付バイトをクワッドワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVSXBW | xmmreg2,xmmreg1 | パックド符号付バイトをワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVSXBW | r/m,xmmreg | パックド符号付バイトをワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVSXWD | xmmreg2,xmmreg1 | パックド符号付ワードをダブルワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVSXWD | r/m,xmmreg | パックド符号付ワードをダブルワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVSXWQ | xmmreg2,xmmreg1 | パックド符号付ワードをクワッドワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVSXWQ | r/m,xmmreg | パックド符号付ワードをクワッドワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVSXDQ | xmmreg2,xmmreg1 | パックド符号付ダブルワードをクワッドワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVSXDQ | r/m,xmmreg | パックド符号付ダブルワードをクワッドワードに変換 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 0 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVZXBD | xmmreg2,xmmreg1 | パックドバイトをダブルワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVZXBD | r/m,xmmreg | パックドバイトをダブルワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVZXBQ | xmmreg2,xmmreg1 | パックドバイトをダブルワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVZXBQ | r/m,xmmreg | パックドバイトをクワッドワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVZXBW | xmmreg2,xmmreg1 | パックドバイトをワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVZXBW | r/m,xmmreg | パックドバイトをワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVZXWD | xmmreg2,xmmreg1 | パックドワードをダブルワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVZXWD | r/m,xmmreg | パックドワードをダブルワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVZXWQ | xmmreg2,xmmreg1 | パックドワードをクワッドワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 1 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVZXWQ | r/m,xmmreg | パックドワードをクワッドワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 1 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMOVZXDQ | xmmreg2,xmmreg1 | パックドダブルワードをクワッドワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 1 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMOVZXDQ | r/m,xmmreg | パックドダブルワードをクワッドワードに0拡張 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 1 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMULDQ | xmmreg2,xmmreg1 | 一つ置きのパックドダブルワードの乗算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 1 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMULDQ | r/m,xmmreg | 一つ置きのパックドダブルワードの乗算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 0 1 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PMULLD | xmmreg2,xmmreg1 | パックドダブルワードの乗算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 1 0 0 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PMULLD | r/m,xmmreg | パックドダブルワードの乗算 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 1 0 0 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PTEST | xmmreg2,xmmreg1 | パックドクワッドワードのANDの結果をZFとCFに反映 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 0 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PTEST | r/m,xmmreg | パックドクワッドワードのANDの結果をZFとCFに反映 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 0 1 0 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
ROUNDPD | xmmreg2: imm8,xmmreg1 | 倍精度小数点を整数に丸める | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
ROUNDPD | r/m,xmmreg,imm8 | 倍精度小数点を整数に丸める | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
ROUNDPS | xmmreg2,xmmreg1,imm8 | 単精度小数点を整数に丸める | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
ROUNDPS | r/m,xmmreg,imm8 | 単精度小数点を整数に丸める | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
ROUNDSD | xmmreg2,xmmreg1,imm8 | 倍精度浮動小数点を整数に丸める | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
ROUNDSD | r/m,xmmreg,imm8 | 倍精度浮動小数点を整数に丸める | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
ROUNDSS | xmmreg2,xmmreg1,imm8 | 単精度浮動小数点を整数に丸める | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
ROUNDSS | r/m,xmmreg,imm8 | 単精度浮動小数点を整数に丸める | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 0 0 0 1 0 1 0 | mod | xmmreg | r/m |
Intel Core i7
Nehalem
2008年、Intelから発表45nmプロセス
メモリーコントローラー内蔵
Intel(R) Core(TM) i7 CPU 870 @ 2.93GHzの例
クワッドコア
L1 inst 4way 32k*4 line size 64byte
L1 data 4way 32k*4 line size 64byte
L2 8way 256k*4 line size 64byte
L3 16way 8Mbyte line size64byte
SSE4.2を追加
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
CRC32 | reg2,reg1 | CRC-32C | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 1 1 1 1 0 0 0 | w | 1 1 | reg1 | reg2 | |||||||||||||||||||||||||||||||||
CRC32 | reg,r/m | CRC-32C | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 1 1 1 1 0 0 0 | w | mod | reg | r/m | |||||||||||||||||||||||||||||||||
CRC32 | reg,bytereg2 | CRC-32C | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 1 1 1 1 0 0 0 0 | 1 1 | reg1 | bytereg2 | ||||||||||||||||||||||||||||||||||
CRC32 | reg,r/m | CRC-32C | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 1 1 1 1 0 0 0 0 | mod | reg | r/m | ||||||||||||||||||||||||||||||||||
CRC32 | qwreg2,qwreg1 | CRC-32C | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 1 1 1 1 0 0 0 0 | 1 1 | qwreg1 | qwreg2 | ||||||||||||||||||||||||||||||||||
CRC32 | qwreg,r/m | CRC-32C | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 1 1 1 1 0 0 0 0 | mod | qwreg | r/m | ||||||||||||||||||||||||||||||||||
PCMPESTRI | xmmreg2: imm8,xmmreg1 | パックド比較、インデックスの生成 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 1 0 0 0 0 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PCMPESTRI | r/m,xmmreg | パックド比較、インデックスの生成 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 1 0 0 0 0 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PCMPESTRM | xmmreg2,xmmreg1,imm8 | パックド比較、マスクの生成 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 1 0 0 0 0 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PCMPESTRM | r/m,xmmreg | パックド比較、マスクの生成 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 1 0 0 0 0 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PCMPISTRI | xmmreg2,xmmreg1,imm8 | パックド比較、インデックスの生成 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 1 0 0 0 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PCMPISTRI | r/m,xmmreg | パックド比較、インデックスの生成 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 1 0 0 0 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PCMPISTRM | xmmreg2,xmmreg1,imm8 | パックド比較、マスクの生成 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 1 0 0 0 1 0 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PCMPISTRM | r/m,xmmreg | パックド比較、マスクの生成 | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 1 0 | 0 1 1 0 0 0 1 0 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
PCMPGTQ | xmmreg2,xmmreg1 | パックドクワッドワード比較 Greater Than | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 1 1 1 | 1 1 | xmmreg1 | xmmreg2 | ||||||||||||||||||||||||||||||||||
PCMPGTQ | r/m,xmmreg | パックドクワッドワード比較 Greater Than | 0 0 0 0 1 1 1 1 | 0 0 1 1 1 0 0 0 | 0 0 1 1 0 1 1 1 | mod | xmmreg | r/m | ||||||||||||||||||||||||||||||||||
POPCNT | reg2,reg1 | ビットが1の数 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 0 0 | 1 1 | reg1 | reg2 | |||||||||||||||||||||||||||||||||||
POPCNT | r/m,reg1 | ビットが1の数 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 0 0 | mod | reg1 | r/m | |||||||||||||||||||||||||||||||||||
POPCNT | reg2,reg1 | ビットが1の数 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 0 0 | 1 1 | reg1 | reg2 | |||||||||||||||||||||||||||||||||||
POPCNT | r/m,reg1 | ビットが1の数 | 0 0 0 0 1 1 1 1 | 1 0 1 1 1 0 0 0 | mod | reg1 | r/m |
8087
特徴
8086のための数値演算プロセッサとして1980年に発表。内部は80bit長の拡張倍精度浮動小数点をサポート
8本のスタック形式のレジスタスタックをもつ。
8086と同じ40ピンDIPでありピン配置も基本的には同じ。
フラグの転送は8086に転送して条件分岐を実行する。
FSTSW AX AX←SW
SAHF flags←ah
浮動小数点値比較におけるx87FPU条件コードの設定
C3 | C2 | C0 | |
ST(0)>ソース | 0 | 0 | 0 |
ST(0)<ソース | 0 | 0 | 1 |
ST(0)=ソース | 1 | 0 | 0 |
拡張倍精度浮動小数点(real 80bit)
倍精度浮動小数点(real 64bit)
単精度浮動小数点(real 32bit)
レジスタ
79 | 78 | 64 | 63 | 15 | 0 | |||||||||||||||
R7 | S | 指数 | 仮数 | |||||||||||||||||
R6 | S | 指数 | 仮数 | |||||||||||||||||
R5 | S | 指数 | 仮数 | |||||||||||||||||
R4 | S | 指数 | 仮数 | |||||||||||||||||
R3 | S | 指数 | 仮数 | |||||||||||||||||
R2 | S | 指数 | 仮数 | |||||||||||||||||
R1 | S | 指数 | 仮数 | |||||||||||||||||
R0 | S | 指数 | 仮数 | |||||||||||||||||
Status Word | ||||||||||||||||||||
Tag Word | ||||||||||||||||||||
Control Word |
スタックは下に向かって伸びる。
TOPが4の場合以下の様になる。
ST(3)=R7
ST(2)=R6
ST(1)=R5
ST(0)=R4
Status Word
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
B | C3 | TOP | C2 | C1 | C0 | ES | SF | PE | UE | OE | ZE | DE | IE |
B
FPUビジーC3,C2,C1,C0
条件コード C2:FPREM 剰余計算が未完了TOP
スタックポイントのトップES
エラー・サマリ・ステータスSF
スタックフォルトPE
精度UE
アンダーフローOE
オーバーフローZE
ゼロによる除算DE
デノーマライズド・オペランドIE
無効な動作8087 | 14 | 10 | 9 | 8 |
C3 | C2 | C1 | C0 | |
x86 | 6 | 2 | 0 | |
ZF | PF | CF |
Tag Word
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
TAG(7) | TAG(6) | TAG(5) | TAG(4) | TAG(3) | TAG(2) | TAG(1) | TAG(0) |
code | xx |
00 | 有効 |
01 | ゼロ |
10 | 特殊:無効(NaN,サポートされない),∞,デノーマル型 |
11 | 空 |
Control Word
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
x | x | x | IC | RC | PC | M | X | PM | UM | OM | ZM | DM | IM |
IC
無限制御RC
丸め制御PC
精度制御code | 精度 |
00 | 単精度(24bit*) |
01 | 予約 |
10 | 倍精度(53bit*) |
11 | 拡張精度(64bit*) |
PM
例外マスク・精度UM
例外マスク・アンダーフローOM
例外マスク・オーバーフローZM
例外マスク・ゼロによる除算DM
例外マスク・デノーマル・オペランドIM
例外マスク・無効な動作OF オーバーフローフラグ
命令一覧
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
fld | r/m | --TOP,ST(0)←r/m(real 32bit) | 1 1 0 1 1 | 0 0 | 1 | mod | 0 0 0 | r/m | ||||||||||
fld/fild | r/m | --TOP,ST(0)←r/m(int 32bit) | 1 1 0 1 1 | 0 1 | 1 | mod | 0 0 0 | r/m | ||||||||||
fld | r/m | --TOP,ST(0)←r/m(real 64bit) | 1 1 0 1 1 | 1 0 | 1 | mod | 0 0 0 | r/m | ||||||||||
fld/fild | r/m | --TOP,ST(0)←r/m(int 16bit) | 1 1 0 1 1 | 1 1 | 1 | mod | 0 0 0 | r/m | ||||||||||
fld/fild | r/m | --TOP,ST(0)←r/m(int 64bit) | 1 1 0 1 1 | 1 1 1 | mod | 1 0 1 | r/m | |||||||||||
fld | r/m | --TOP,ST(0)←r/m(real 80bit) | 1 1 0 1 1 | 0 1 1 | mod | 1 0 1 | r/m | |||||||||||
fld/fbld | r/m | --TOP,ST(0)←r/m(BCD 80bit) | 1 1 0 1 1 | 1 1 1 | mod | 1 0 0 | r/m | |||||||||||
fld | ST(i) | --TOP,ST(0)←ST(i) | 1 1 0 1 1 | 0 0 1 | 1 1 0 0 0 | i | ||||||||||||
fst | r/m | r/m←ST(0)(real 32bit) | 1 1 0 1 1 | 0 0 | 1 | mod | 0 1 0 | r/m | ||||||||||
fst/fist | r/m | r/m←ST(0)(int 32bit) | 1 1 0 1 1 | 0 1 | 1 | mod | 0 1 0 | r/m | ||||||||||
fst | r/m | r/m←ST(0)(real 64bit) | 1 1 0 1 1 | 1 0 | 1 | mod | 0 1 0 | r/m | ||||||||||
fst/fist | r/m | r/m←ST(0)(int 16bit) | 1 1 0 1 1 | 1 1 | 1 | mod | 0 1 0 | r/m | ||||||||||
fst | ST(i) | ST(i)←ST(0) | 1 1 0 1 1 | 1 0 1 | 1 1 0 1 0 | i | ||||||||||||
fstp | r/m | r/m←ST(0)(real 32bit),++TOP | 1 1 0 1 1 | 0 0 | 1 | mod | 0 1 1 | r/m | ||||||||||
fstp | r/m | r/m←ST(0)(int 32bit),++TOP | 1 1 0 1 1 | 0 1 | 1 | mod | 0 1 1 | r/m | ||||||||||
fstp | r/m | r/m←ST(0)(real 64bit),++TOP | 1 1 0 1 1 | 1 0 | 1 | mod | 0 1 1 | r/m | ||||||||||
fstp | r/m | r/m←ST(0)(int 16bit),++TOP | 1 1 0 1 1 | 1 1 | 1 | mod | 0 1 1 | r/m | ||||||||||
fstp | r/m | r/m←ST(0)(int 64bit),++TOP | 1 1 0 1 1 | 1 1 1 | mod | 0 1 1 | r/m | |||||||||||
fstp | r/m | r/m←ST(0)(real 80bit),++TOP | 1 1 0 1 1 | 0 1 1 | mod | 1 1 1 | r/m | |||||||||||
fstp/fbstp | r/m | r/m←ST(0)(BCD 80bit),++TOP | 1 1 0 1 1 | 1 1 1 | mod | 1 1 0 | r/m | |||||||||||
fstp | ST(i) | ST(i)←ST(0),++TOP | 1 1 0 1 1 | 1 0 1 | 1 1 0 1 1 | i | ||||||||||||
fxch | ST(i) | ST(0)⇄ST(i) | 1 1 0 1 1 | 0 0 1 | 1 1 0 0 1 | i | ||||||||||||
fcom | r/m | r/m to ST(0)(real 32bit) | 1 1 0 1 1 | 0 0 | 0 | mod | 0 1 0 | r/m | ||||||||||
fcom/ficom | r/m | r/m to ST(0)(int 32bit) | 1 1 0 1 1 | 0 1 | 0 | mod | 0 1 0 | r/m | ||||||||||
fcom | r/m | r/m to ST(0)(real 64bit) | 1 1 0 1 1 | 1 0 | 0 | mod | 0 1 0 | r/m | ||||||||||
fcom/ficom | r/m | r/m to ST(0)(int 16bit) | 1 1 0 1 1 | 1 1 | 0 | mod | 0 1 0 | r/m | ||||||||||
fcom | ST(i) | ST(i) to ST(0) | 1 1 0 1 1 | 0 0 0 | 1 1 0 1 0 | i | ||||||||||||
fcomp | r/m | r/m to ST(0)(real 32bit),++TOP | 1 1 0 1 1 | 0 0 | 0 | mod | 0 1 1 | r/m | ||||||||||
fcomp/ficomp | r/m | r/m to ST(0)(int 32bit),++TOP | 1 1 0 1 1 | 0 1 | 0 | mod | 0 1 1 | r/m | ||||||||||
fcomp | r/m | r/m to ST(0)(real 64bit),++TOP | 1 1 0 1 1 | 1 0 | 0 | mod | 0 1 1 | r/m | ||||||||||
fcomp/ficomp | r/m | r/m to ST(0)(int 16bit),++TOP | 1 1 0 1 1 | 1 1 | 0 | mod | 0 1 1 | r/m | ||||||||||
fcomp | ST(i) | ST(i) to ST(0),++TOP | 1 1 0 1 1 | 0 0 0 | 1 1 0 1 1 | i | ||||||||||||
fcompp | ST(1) to ST(0),++TOP,++TOP | 1 1 0 1 1 | 1 1 0 | 1 1 0 1 1 0 0 1 | ||||||||||||||
ftst | ST(0)を0と比較 | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 0 1 0 0 | ||||||||||||||
fxam | ST(0)の値によりStatus Wordを設定 | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 0 1 0 1 | ||||||||||||||
fldz | --TOP,ST(0)←+0.0 | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 1 1 1 0 | ||||||||||||||
fld1 | --TOP,ST(0)←+1.0 | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 1 0 0 0 | ||||||||||||||
fldpi | --TOP,ST(0)←π | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 1 0 1 1 | ||||||||||||||
fldl2t | --TOP,ST(0)←log210 | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 1 0 0 1 | ||||||||||||||
fldl2e | --TOP,ST(0)←log2e | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 1 0 1 0 | ||||||||||||||
fldlg2 | --TOP,ST(0)←log102 | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 1 1 0 0 | ||||||||||||||
fldln2 | --TOP,ST(0)←loge2 | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 1 1 0 1 | ||||||||||||||
fadd | r/m | ST(0)←ST(0)+r/m(real 32bit) | 1 1 0 1 1 | 0 0 | 0 | mod | 0 0 0 | r/m | ||||||||||
fadd | r/m | ST(0)←ST(0)+r/m(int 32bit) | 1 1 0 1 1 | 0 1 | 0 | mod | 0 0 0 | r/m | ||||||||||
fadd | r/m | ST(0)←ST(0)+r/m(real 64bit) | 1 1 0 1 1 | 1 0 | 0 | mod | 0 0 0 | r/m | ||||||||||
fadd | r/m | ST(0)←ST(0)+r/m(int 16bit) | 1 1 0 1 1 | 1 1 | 0 | mod | 0 0 0 | r/m | ||||||||||
fadd | ST(0),ST(i) | ST(0)←ST(i)+ST(0) | 1 1 0 1 1 | 0 | 0 | 0 | 1 1 0 0 0 | i | ||||||||||
fadd | ST(i),ST(0) | ST(i)←ST(0)+ST(i) | 1 1 0 1 1 | 1 | 0 | 0 | 1 1 0 0 0 | i | ||||||||||
faddp | ST(i),ST(0) | ST(i)←ST(i)+ST(0),++TOP | 1 1 0 1 1 | 1 | 1 | 0 | 1 1 0 0 0 | i | ||||||||||
fsub | r/m | ST(0)←ST(0)-r/m(real 32bit) | 1 1 0 1 1 | 0 0 | 0 | mod | 1 0 | 0 | r/m | |||||||||
fsub | r/m | ST(0)←ST(0)-r/m(int 32bit) | 1 1 0 1 1 | 0 1 | 0 | mod | 1 0 | 0 | r/m | |||||||||
fsub | r/m | ST(0)←ST(0)-r/m(real 64bit) | 1 1 0 1 1 | 1 0 | 0 | mod | 1 0 | 0 | r/m | |||||||||
fsub | r/m | ST(0)←ST(0)-r/m(int 16bit) | 1 1 0 1 1 | 1 1 | 0 | mod | 1 0 | 0 | r/m | |||||||||
fsub | ST(0),ST(i) | ST(0)←ST(0)-ST(i) | 1 1 0 1 1 | 0 | 0 | 0 | 1 1 1 0 | 0 | i | |||||||||
fsub | ST(i),ST(0) | ST(i)←ST(i)-ST(0) | 1 1 0 1 1 | 1 | 0 | 0 | 1 1 1 0 | 0 | i | |||||||||
fsubp | ST(i),ST(0) | ST(i)←ST(i)-ST(0),++TOP | 1 1 0 1 1 | 1 | 1 | 0 | 1 1 1 0 | 0 | i | |||||||||
fsubr | r/m | ST(0)←r/m-ST(0)(real 32bit) | 1 1 0 1 1 | 0 0 | 0 | mod | 1 0 | 1 | r/m | |||||||||
fsubr | r/m | ST(0)←r/m-ST(0)(int 32bit) | 1 1 0 1 1 | 0 1 | 0 | mod | 1 0 | 1 | r/m | |||||||||
fsubr | r/m | ST(0)←r/m-ST(0)(real 64bit) | 1 1 0 1 1 | 1 0 | 0 | mod | 1 0 | 1 | r/m | |||||||||
fsubr | r/m | ST(0)←r/m-ST(0)(int 16bit) | 1 1 0 1 1 | 1 1 | 0 | mod | 1 0 | 1 | r/m | |||||||||
fsubr | ST(0),ST(i) | ST(0)←ST(i)-ST(0) | 1 1 0 1 1 | 0 | 0 | 0 | 1 1 1 0 | 1 | i | |||||||||
fsubr | ST(i),ST(0) | ST(i)←ST(0)-ST(i) | 1 1 0 1 1 | 1 | 0 | 0 | 1 1 1 0 | 1 | i | |||||||||
fsubrp | ST(i),ST(0) | ST(i)←ST(0)-ST(i),++TOP | 1 1 0 1 1 | 1 | 1 | 0 | 1 1 1 0 | 1 | i | |||||||||
fmul | r/m | ST(0)←ST(0)*r/m(real 32bit) | 1 1 0 1 1 | 0 0 | 0 | mod | 0 0 1 | r/m | ||||||||||
fmul | r/m | ST(0)←ST(0)*r/m(int 32bit) | 1 1 0 1 1 | 0 1 | 0 | mod | 0 0 1 | r/m | ||||||||||
fmul | r/m | ST(0)←ST(0)*r/m(real 64bit) | 1 1 0 1 1 | 1 0 | 0 | mod | 0 0 1 | r/m | ||||||||||
fmul | r/m | ST(0)←ST(0)*r/m(int 16bit) | 1 1 0 1 1 | 1 1 | 0 | mod | 0 0 1 | r/m | ||||||||||
fmul | ST(0),ST(i) | ST(0)←ST(0)*ST(i) | 1 1 0 1 1 | 0 | 0 | 0 | 1 1 0 0 1 | i | ||||||||||
fmul | ST(i),ST(0) | ST(i)←ST(i)*ST(0) | 1 1 0 1 1 | 1 | 0 | 0 | 1 1 0 0 1 | i | ||||||||||
fmulp | ST(i),ST(0) | ST(i)←ST(i)*ST(0),++TOP | 1 1 0 1 1 | 1 | 1 | 0 | 1 1 0 0 1 | i | ||||||||||
fdiv | r/m | ST(0)←ST(0)/r/m(real 32bit) | 1 1 0 1 1 | 0 0 | 0 | mod | 1 1 | 0 | r/m | |||||||||
fdiv | r/m | ST(0)←ST(0)/r/m(int 32bit) | 1 1 0 1 1 | 0 1 | 0 | mod | 1 1 | 0 | r/m | |||||||||
fdiv | r/m | ST(0)←ST(0)/r/m(real 64bit) | 1 1 0 1 1 | 1 0 | 0 | mod | 1 1 | 0 | r/m | |||||||||
fdiv | r/m | ST(0)←ST(0)/r/m(int 16bit) | 1 1 0 1 1 | 1 1 | 0 | mod | 1 1 | 0 | r/m | |||||||||
fdiv | ST(0),ST(i) | ST(0)←ST(0)/ST(i) | 1 1 0 1 1 | 0 | 0 | 0 | 1 1 1 1 | 0 | i | |||||||||
fdiv | ST(i),ST(0) | ST(i)←ST(i)/ST(0) | 1 1 0 1 1 | 1 | 0 | 0 | 1 1 1 1 | 1 | i | |||||||||
fdivp | ST(i),ST(0) | ST(i)←ST(i)/ST(0),++TOP | 1 1 0 1 1 | 1 | 1 | 0 | 1 1 1 1 | 1 | i | |||||||||
fdivr | r/m | ST(0)←r/m /ST(0)(real 32bit) | 1 1 0 1 1 | 0 0 | 0 | mod | 1 1 | 1 | r/m | |||||||||
fdivr | r/m | ST(0)←r/m /ST(0)(int 32bit) | 1 1 0 1 1 | 0 1 | 0 | mod | 1 1 | 1 | r/m | |||||||||
fdivr | r/m | ST(0)←r/m /ST(0)(real 64bit) | 1 1 0 1 1 | 1 0 | 0 | mod | 1 1 | 1 | r/m | |||||||||
fdivr | r/m | ST(0)←r/m /ST(0)(int 16bit) | 1 1 0 1 1 | 1 1 | 0 | mod | 1 1 | 1 | r/m | |||||||||
fdivr | ST(0),ST(i) | ST(0)←ST(i)/ST(0) | 1 1 0 1 1 | 0 | 0 | 0 | 1 1 1 1 | 1 | r/m | |||||||||
fdivr | ST(i),ST(0) | ST(i)←ST(0)/ST(i) | 1 1 0 1 1 | 1 | 0 | 0 | 1 1 1 1 | 0 | r/m | |||||||||
fdivrp | ST(i),ST(0) | ST(i)←ST(0)/ST(i),++TOP | 1 1 0 1 1 | 1 | 1 | 0 | 1 1 1 1 | 0 | r/m | |||||||||
fsqrt | √(ST(0)) | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 1 0 1 0 | ||||||||||||||
fscale | ST(0)をST(1)でスケーリング | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 1 1 0 1 | ||||||||||||||
fprem | ST(0)←ST(0)%ST(1) | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 1 0 0 0 | ||||||||||||||
frndint | ST(0)←round(ST(0)) | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 1 1 0 0 | ||||||||||||||
fxtract | ST(0)←ST(0)の指数, ST(0)←ST(0)の仮数 | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 0 1 0 0 | ||||||||||||||
fabs | ST(0)←|ST(0)| | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 0 0 0 1 | ||||||||||||||
fchs | ST(0)←-ST(0) | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 0 0 0 0 | ||||||||||||||
fptan | ST(0)←tan(ST(0)),--TOP,ST(0)←1.0 | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 0 0 1 0 | ||||||||||||||
fpatan | ST(0)←tan-1(ST(1)/ST(0)) ++TOP | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 0 0 1 1 | ||||||||||||||
f2xm1 | ST(0)←2ST(0)-1 | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 0 0 0 0 | ||||||||||||||
fyl2x | ST(1)←ST(1)*log2ST(0) ++TOP | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 0 0 0 1 | ||||||||||||||
fyl2xp1 | ST(1)←ST(1)*log2(ST(0)+1.0) ++TOP | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 1 0 0 1 | ||||||||||||||
finit | Initialize Floating-Point Unit | 1 1 0 1 1 | 0 1 1 | 1 1 1 0 0 0 1 1 | ||||||||||||||
fpei | Enable Interrupts | 1 1 0 1 1 | 0 1 1 | 1 1 1 0 0 0 0 0 | ||||||||||||||
fdisi | Disable Interrupts | 1 1 0 1 1 | 0 1 1 | 1 1 1 0 0 0 0 1 | ||||||||||||||
fldcw | r/m | FPUCounrolWord←r/m | 1 1 0 1 1 | 0 0 1 | mod | 1 0 1 | r/m | |||||||||||
fstcw | r/m | r/m←FPUCounrolWord | 1 1 0 1 1 | 0 0 1 | mod | 1 1 1 | r/m | |||||||||||
fstsw | r/m | r/m←FPUStatusWord | 1 1 0 1 1 | 1 0 1 | mod | 1 1 1 | r/m | |||||||||||
fclex | Clear Exceptions | 1 1 0 1 1 | 0 1 1 | 1 1 1 0 0 0 1 0 | ||||||||||||||
fstenv | r/m | Store x87 FPU Environment | 1 1 0 1 1 | 0 0 1 | mod | 1 1 0 | r/m | |||||||||||
fldenv | r/m | Load x87 FPU Environment | 1 1 0 1 1 | 0 0 1 | mod | 1 0 0 | r/m | |||||||||||
fsave | r/m | Store x87 FPU State | 1 1 0 1 1 | 1 0 1 | mod | 1 1 0 | r/m | |||||||||||
frstor | Restore x87 FPU State | 1 1 0 1 1 | 1 0 1 | mod | 1 0 0 | r/m | ||||||||||||
fincstp | ++TOP | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 0 1 1 1 | ||||||||||||||
fdecstp | --TOP | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 0 1 1 0 | ||||||||||||||
ffree | ST(i)を空にする。(tagi=11) | 1 1 0 1 1 | 1 0 1 | 1 1 0 0 0 | i | |||||||||||||
fnop | No Operation | 1 1 0 1 1 | 0 0 1 | 1 1 0 1 0 0 0 0 | ||||||||||||||
fwait | 1 0 0 1 1 0 1 1 |
80287
80286用の数値演算プロセッサとして発表される。
80286とはIO形式で接続される。演算速度は8087ど同等であるが、IO形式なので遅い。
40ピン DIP
80286とはIO形式で接続される。演算速度は8087ど同等であるが、IO形式なので遅い。
40ピン DIP
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
fsetmp | Set protected mode 80287 80387以降はfnop | 1 1 0 1 1 | 1 1 1 | 1 1 1 0 0 1 0 0 | ||||||||||||||
fstsw | AX | AX←FPUStatusWord | 1 1 0 1 1 | 1 1 1 | 1 1 1 0 0 0 0 0 |
80387
80386用の数値演算プロセッサとして発表される。
sin,cos等の命令が追加される。
sin,cos等の命令が追加される。
inst | op | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
fucom | ST(i) | ST(0)をST(i)と比較 | 1 1 0 1 1 | 1 0 1 | 1 1 1 0 0 | i | ||||||||||||
fucomp | ST(i) | ST(0)をST(i)と比較,--TOP | 1 1 0 1 1 | 0 0 1 | 1 1 1 0 0 | i | ||||||||||||
fucompp | ST(i) | ST(0)をST(i)と比較,--TOP,--TOP | 1 1 0 1 1 | 0 1 0 | 1 1 1 0 1 0 0 1 | |||||||||||||
fprem1 | ST(0)←ST(0) % ST(1) IEEE剰余 | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 0 1 0 1 | ||||||||||||||
fcos | r/m | ST(0)←cos(ST(0)) | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 1 1 1 1 | |||||||||||||
fsin | r/m | ST(0)←sin(ST(0)) | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 1 1 1 0 | |||||||||||||
fsincos | r/m | ST(0)←sin(ST'(0)),--TOP,ST(0)←cos(ST'(0)) | 1 1 0 1 1 | 0 0 1 | 1 1 1 1 1 0 1 1 |
命令エンコード
Legacy Prefixes | Prefixes | Opcode | ModR/M | SIB | Displacement | Immediate |
0~4byte | 1~3byte | 0~1byte | 0~1byte | 0,1,2,4byte | 0,1,2,4byte |
Prefixes
Legacy prefix
Prefix group 1
0xF0: LOCK prefix0xF2: REPNE/REPNZ prefix
0xF3: REP or REPE/REPZ prefix
Prefix group 2
0x2E: CS segment override0x36: SS segment override
0x3E: DS segment override
0x26: ES segment override
0x64: FS segment override
0x65: GS segment override
0x2E: Branch not taken
0x3E: Branch taken
Prefix group 3
0x66: Operand-size override prefixPrefix group 4
0x67: Address-size override prefixREX prefix
64bit化により導入ModR/Mフィールドのr/m、reg、SIBフィールドのBase、Indexの上位に1bit追加することにより追加レジスタを指定可能。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 1 | 0 | 0 | W | R | X | B |
W
1:64bit 0:32bitR
MODRM reg fieldX
SIB index fieldB
MODRM.rm field or SIB Base fieldVEX or XOP prefix
AVX導入時に追加7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | R | X | B | map select | W/E | vvvv | L | pp | |||||||||||
1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | R | X | B | map select | W/E | vvvv | L | pp | |||||||||||
1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | R | vvvvt | L | pp | L | pp |
R
inverted MODRM.reg fieldX
inverted SIB.index fieldB
inverted MODRM.rm field ot the SIB field.The inverse of REX.Bmap list
Specifies the opcode map to useW/E
1:64bit 0:defaultvvvv
追加オペランド XMM or YMM invertedL
0:128bit 1:256bitpp
value | Implied mandatory prefix |
00 | none |
01 | 0x66 |
10 | 0xf3 |
11 | 0xf2 |
16bitデーターモード
reg | W=0 | W=1 |
000 | AL | AX |
001 | CL | CX |
010 | DL | DX |
011 | BL | CX |
100 | AH | SP |
101 | CH | BP |
110 | DH | SI |
111 | BH | DI |
32bitデーターモード
16bitモード | 32bitモード | |||
reg | W=0 | W=1 | W=0 | W=1 |
000 | AL | AX | AL | AX |
001 | CL | CX | CL | CX |
010 | DL | DX | DL | DX |
011 | BL | CX | BL | CX |
100 | AH | SP | AH | SP |
101 | CH | BP | CH | BP |
110 | DH | SI | DH | SI |
111 | BH | DI | BH | DI |
REX prefix使用時
REX.X | Index | 8bit | 16bit | 32bit | 64bit | 80bit | MMX | XMM | YMM | seg | Control | Debug | |
0 | 000 | AX | AL | AX | EAX | RAX | ST0 | MMX0 | XMM0 | YMM0 | ES | CR0 | DR0 |
0 | 001 | CX | CL | CX | ECX | RCX | ST1 | MMX1 | XMM1 | YMM1 | CS | CR1 | DR1 |
0 | 010 | DX | DL | DX | EDX | RDX | ST2 | MMX2 | XMM2 | YMM2 | SS | CR2 | DR2 |
0 | 011 | BX | BL | BX | EBX | RBX | ST3 | MMX3 | XMM3 | YMM3 | DS | CR3 | DR3 |
0 | 100 | SP | SPL | SP | ESP | RSP | ST4 | MMX4 | XMM4 | YMM4 | FS | CR4 | DR4 |
0 | 101 | BP | BPL | BP | EBP | RBP | ST5 | MMX5 | XMM5 | YMM5 | GS | CR5 | DR5 |
0 | 110 | SI | SIL | SI | ESI | RSI | ST6 | MMX6 | XMM6 | YMM6 | CR6 | DR6 | |
0 | 111 | DI | DIL | DI | EDI | RDI | ST7 | MMX7 | XMM7 | YMM7 | CR7 | DR7 | |
1 | 000 | R8 | R8L | R8W | R8D | R8 | MMX0 | XMM8 | YMM8 | ES | CR8 | DR8 | |
1 | 001 | R9 | R9L | R9W | R9D | R9 | MMX1 | XMM9 | YMM9 | CS | CR9 | DR9 | |
1 | 010 | R10 | R10L | R10W | R10D | R10 | MMX2 | XMM10 | YMM10 | SS | CR10 | DR10 | |
1 | 011 | R11 | R11L | R11W | R11D | R11 | MMX3 | XMM11 | YMM11 | DS | CR11 | DR11 | |
1 | 100 | R12 | R12L | R12W | R12D | R12 | MMX4 | XMM12 | YMM12 | FS | CR12 | DR12 | |
1 | 101 | R13 | R13L | R13W | R13D | R13 | MMX5 | XMM13 | YMM13 | GS | CR13 | DR13 | |
1 | 110 | R14 | R14L | R14W | R14D | R14 | MMX6 | XMM14 | YMM14 | CR14 | DR14 | ||
1 | 111 | R15 | R15L | R15W | R15D | R15 | MMX7 | XMM15 | YMM15 | CR15 | DR15 |
16bitアドレスモード
mod | |||||
r/m | 00 | 01 | 10 | 1 1 | |
W=0 | W=1 | ||||
000 | [BX+SI] | [BX+SI+d8] | [BX+SI+d16] | AL | AX |
001 | [BX+DI] | [BX+DI+d8] | [BX+DI+d16] | CL | CX |
010 | [BP+SI] | [BP+SI+d8] | [BP+SI+d16] | DL | DX |
011 | [BP+DI] | [BP+DI+d8] | [BP+DI+d16] | BL | CX |
100 | [SI] | [SI+d8] | [SI+d16] | AH | SP |
101 | [DI] | [DI+d8] | [DI+d16] | CH | BP |
110 | d16 | [BP+d8] | [BP+d16] | DH | SI |
111 | [BX] | [BX+d8] | [BX+d16] | BH | DI |
32bitアドレスモード
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
MOD_RM_Field | SIB_Field | ||||||||||||||
mod | xxx | r/m | SS | Index | Base |
mod | |||||||
r/m | 00 | 01 | 10 | 11 | |||
16bit | 32bit | ||||||
w=0 | w=1 | w=0 | w=1 | ||||
000 | DS:[EAX] | DS:[EAX+d8] | DS:[EAX+d32] | AL | AX | AL | EAX |
001 | DS:[ECX] | DS:[ECX+d8] | DS:[ECX+d32] | CL | CX | CL | ECX |
010 | DS:[EDX] | DS:[EDX+d8] | DS:[EDX+d32] | DL | DX | DL | EDX |
011 | DS:[EBX] | DS:[EBX+d8] | DS:[EBX+d32] | BL | CX | BL | ECX |
100 | s-i-b is present | AH | SP | AH | ESP | ||
101 | DS:d32 | SS:[EBP+d8] | SS:[EBP+d32] | CH | BP | CH | EBP |
110 | DS:[ESI] | DS:[ESI+d8] | DS:[ESI+d32] | DH | SI | DH | ESI |
111 | DS:[EDI] | DS:[EDI+d8] | DS:[EDI+d32] | BH | DI | BH | EDI |
Index | |||||||||
mod | base | seg | 000 | 001 | 010 | 011 | 101 | 110 | 111 |
00 | 000 | DS | [EAX+EAX*SC] | [EAX+ECX*SC] | [EAX+EDX*SC] | [EAX+EBX*SC] | [EAX+EBP*SC] | [EAX+ESI*SC] | [EAX+EDI*SC] |
00 | 001 | DS | [ECX+EAX*SC] | [ECX+ECX*SC] | [ECX+EDX*SC] | [ECX+EBX*SC] | [ECX+EBP*SC] | [ECX+ESI*SC] | [ECX+EDI*SC] |
00 | 010 | DS | [EDX+EAX*SC] | [EDX+ECX*SC] | [EDX+EDX*SC] | [EDX+EBX*SC] | [EDX+EBP*SC] | [EDX+ESI*SC] | [EDX+EDI*SC] |
00 | 011 | DS | [EBX+EAX*SC] | [EBX+ECX*SC] | [EBX+EDX*SC] | [EBX+EBX*SC] | [EBX+EBP*SC] | [EBX+ESI*SC] | [EBX+EDI*SC] |
00 | 100 | DS | [ESP+EAX*SC] | [ESP+ECX*SC] | [ESP+EDX*SC] | [ESP+EBX*SC] | [ESP+EBP*SC] | [ESP+ESI*SC] | [ESP+EDI*SC] |
00 | 101 | DS | [d32+EAX*SC] | [d32+ECX*SC] | [d32+EDX*SC] | [d32+EBX*SC] | [d32+EBP*SC] | [d32+ESI*SC] | [d32+EDI*SC] |
00 | 110 | DS | [ESI+EAX*SC] | [ESI+ECX*SC] | [ESI+EDX*SC] | [ESI+EBX*SC] | [ESI+EBP*SC] | [ESI+ESI*SC] | [ESI+EDI*SC] |
00 | 111 | DS | [EDI+EAX*SC] | [EDI+ECX*SC] | [EDI+EDX*SC] | [EDI+EBX*SC] | [EDI+EBP*SC] | [EDI+ESI*SC] | [EDI+EDI*SC] |
01 | 000 | DS | [EAX+EAX*SC+d8] | [EAX+ECX*SC+d8] | [EAX+EDX*SC+d8] | [EAX+EBX*SC+d8] | [EAX+EBP*SC+d8] | [EAX+ESI*SC+d8] | [EAX+EDI*SC+d8] |
01 | 001 | DS | [ECX+EAX*SC+d8] | [ECX+ECX*SC+d8] | [ECX+EDX*SC+d8] | [ECX+EBX*SC+d8] | [ECX+EBP*SC+d8] | [ECX+ESI*SC+d8] | [ECX+EDI*SC+d8] |
01 | 010 | DS | [EDX+EAX*SC+d8] | [EDX+ECX*SC+d8] | [EDX+EDX*SC+d8] | [EDX+EBX*SC+d8] | [EDX+EBP*SC+d8] | [EDX+ESI*SC+d8] | [EDX+EDI*SC+d8] |
01 | 011 | DS | [EBX+EAX*SC+d8] | [EBX+ECX*SC+d8] | [EBX+EDX*SC+d8] | [EBX+EBX*SC+d8] | [EBX+EBP*SC+d8] | [EBX+ESI*SC+d8] | [EBX+EDI*SC+d8] |
01 | 100 | DS | [ESP+EAX*SC+d8] | [ESP+ECX*SC+d8] | [ESP+EDX*SC+d8] | [ESP+EBX*SC+d8] | [ESP+EBP*SC+d8] | [ESP+ESI*SC+d8] | [ESP+EDI*SC+d8] |
01 | 101 | SS | [EBP+EAX*SC+d8] | [EBP+ECX*SC+d8] | [EBP+EDX*SC+d8] | [EBP+EBX*SC+d8] | [EBP+EBP*SC+d8] | [EBP+ESI*SC+d8] | [EBP+EDI*SC+d8] |
01 | 110 | DS | [ESI+EAX*SC+d8] | [ESI+ECX*SC+d8] | [ESI+EDX*SC+d8] | [ESI+EBX*SC+d8] | [ESI+EBP*SC+d8] | [ESI+ESI*SC+d8] | [ESI+EDI*SC+d8] |
01 | 111 | DS | [EDI+EAX*SC+d8] | [EDI+ECX*SC+d8] | [EDI+EDX*SC+d8] | [EDI+EBX*SC+d8] | [EDI+EBP*SC+d8] | [EDI+ESI*SC+d8] | [EDI+EDI*SC+d8] |
10 | 000 | DS | [EAX+EAX*SC+d32] | [EAX+ECX*SC+d32] | [EAX+EDX*SC+d32] | [EAX+EBX*SC+d32] | [EAX+EBP*SC+d32] | [EAX+ESI*SC+d32] | [EAX+EDI*SC+d32] |
10 | 001 | DS | [ECX+EAX*SC+d32] | [ECX+ECX*SC+d32] | [ECX+EDX*SC+d32] | [ECX+EBX*SC+d32] | [ECX+EBP*SC+d32] | [ECX+ESI*SC+d32] | [ECX+EDI*SC+d32] |
10 | 010 | DS | [EDX+EAX*SC+d32] | [EDX+ECX*SC+d32] | [EDX+EDX*SC+d32] | [EDX+EBX*SC+d32] | [EDX+EBP*SC+d32] | [EDX+ESI*SC+d32] | [EDX+EDI*SC+d32] |
10 | 011 | DS | [EBX+EAX*SC+d32] | [EBX+ECX*SC+d32] | [EBX+EDX*SC+d32] | [EBX+EBX*SC+d32] | [EBX+EBP*SC+d32] | [EBX+ESI*SC+d32] | [EBX+EDI*SC+d32] |
10 | 100 | DS | [ESP+EAX*SC+d32] | [ESP+ECX*SC+d32] | [ESP+EDX*SC+d32] | [ESP+EBX*SC+d32] | [ESP+EBP*SC+d32] | [ESP+ESI*SC+d32] | [ESP+EDI*SC+d32] |
10 | 101 | SS | [EBP+EAX*SC+d32] | [EBP+ECX*SC+d32] | [EBP+EDX*SC+d32] | [EBP+EBX*SC+d32] | [EBP+EBP*SC+d32] | [EBP+ESI*SC+d32] | [EBP+EDI*SC+d32] |
10 | 110 | DS | [ESI+EAX*SC+d32] | [ESI+ECX*SC+d32] | [ESI+EDX*SC+d32] | [ESI+EBX*SC+d32] | [ESI+EBP*SC+d32] | [ESI+ESI*SC+d32] | [ESI+EDI*SC+d32] |
10 | 111 | DS | [EDI+EAX*SC+d32] | [EDI+ECX*SC+d32] | [EDI+EDX*SC+d32] | [EDI+EBX*SC+d32] | [EDI+EBP*SC+d32] | [EDI+ESI*SC+d32] | [EDI+EDI*SC+d32] |
ss | Scale(SC) |
00 | 1 |
01 | 2 |
10 | 4 |
11 | 8 |
32/64bitアドレスモード
REX.B | r/m | mod | |||
00 | 01 | 10 | 11 | ||
0 | 000 | [AX] | [AX+d8] | [AX+d32] | AX |
001 | [CX] | [CX+d8] | [CX+d32] | CX | |
010 | [DX] | [DX+d8] | [DX+d32] | DX | |
011 | [BX] | [BX+d8] | [BX+d32] | BX | |
100 | SIB | [SIB+d8] | [SIB+d32] | SP | |
101 | [RIP/EIP+d32] | [BP+d8] | [BP+d32] | BP | |
110 | [SI] | [SI+d8] | [SI+d32] | SI | |
111 | [DI] | [DI+d8] | [DI+d32] | DI | |
1 | 000 | [R8] | [R8+d8] | [R8+d32] | R8 |
001 | [R9] | [R9+d8] | [R9+d32] | R9 | |
010 | [R10] | [R10+d8] | [R10+d32] | R10 | |
011 | [R11] | [R11+d8] | [R11+d32] | R11 | |
100 | SIB | [SIB+d8] | [SIB+d32] | R12 | |
101 | [R13] | [R13+d8] | [R13+d32] | R13 | |
110 | [R14] | [R14+d8] | [R14+d32] | R14 | |
111 | [R15] | [R15+d8] | [R15+d32] | R15 |
REX.B | ||||||||||||||||||
0 | 1 | |||||||||||||||||
Base | ||||||||||||||||||
000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | |||
REX.X | Index | AX | CX | DX | BX | SP | BP | SI | DI | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15 | |
0 | 000 | AX | [AX+AX*SC] | [CX+AX*SC] | [DX+AX*SC] | [BX+AX*SC] | [SP+AX*SC] | [AX*SC+d32] | [SI+AX*SC] | [DI+AX*SC] | [R8+AX*SC] | [R9+AX*SC] | [R10+AX*SC] | [R11+AX*SC] | [R12+AX*SC] | [AX*SC+d32] | [AX*SC] | [AX*SC] |
0 | 001 | CX | [AX+CX*SC] | [CX+CX*SC] | [DX+CX*SC] | [BX+CX*SC] | [SP+CX*SC] | [CX*SC+d32] | [SI+CX*SC] | [DI+CX*SC] | [R8+CX*SC] | [R9+CX*SC] | [R10+CX*SC] | [R11+CX*SC] | [R12+CX*SC] | [CX*SC+d32] | [CX*SC] | [CX*SC] |
0 | 010 | DX | [AX+DX*SC] | [CX+DX*SC] | [DX+DX*SC] | [BX+DX*SC] | [SP+DX*SC] | [DX*SC+d32] | [SI+DX*SC] | [DI+DX*SC] | [R8+DX*SC] | [R9+DX*SC] | [R10+DX*SC] | [R11+DX*SC] | [R12+DX*SC] | [DX*SC+d32] | [DX*SC] | [DX*SC] |
0 | 011 | BX | [AX+BX*SC] | [CX+BX*SC] | [DX+BX*SC] | [BX+BX*SC] | [SP+BX*SC] | [BX*SC+d32] | [SI+BX*SC] | [DI+BX*SC] | [R8+BX*SC] | [R9+BX*SC] | [R10+BX*SC] | [R11+BX*SC] | [R12+BX*SC] | [BX*SC+d32] | [BX*SC] | [BX*SC] |
0 | 100 | SP | [AX] | [CX] | [DX] | [BX] | [d32] | [BP] | [SI] | [DI] | [R8] | [R9] | [R10] | [R11] | [R12] | [d32] | [R14] | [R15] |
0 | 101 | BP | [AX+BP*SC] | [CX+BP*SC] | [DX+BP*SC] | [BX+BP*SC] | [SP+BP*SC] | [BP*SC+d32] | [SI+BP*SC] | [DI+BP*SC] | [R8+BP*SC] | [R9+BP*SC] | [R10+BP*SC] | [R11+BP*SC] | [R12+BP*SC] | [BP*SC+d32] | [BP*SC] | [BP*SC] |
0 | 110 | SI | [AX+SI*SC] | [CX+SI*SC] | [DX+SI*SC] | [BX+SI*SC] | [SP+SI*SC] | [SI*SC+d32] | [SI+SI*SC] | [DI+SI*SC] | [R8+SI*SC] | [R9+SI*SC] | [R10+SI*SC] | [R11+SI*SC] | [R12+SI*SC] | [SI*SC+d32] | [SI*SC] | [SI*SC] |
0 | 111 | DI | [AX+DI*SC] | [CX+DI*SC] | [DX+DI*SC] | [BX+DI*SC] | [SP+DI*SC] | [DI*SC+d32] | [SI+DI*SC] | [DI+DI*SC] | [R8+DI*SC] | [R9+DI*SC] | [R10+DI*SC] | [R11+DI*SC] | [R12+DI*SC] | [DI*SC+d32] | [DI*SC] | [DI*SC] |
1 | 000 | R8 | [AX+R8*SC] | [CX+R8*SC] | [DX+R8*SC] | [BX+R8*SC] | [SP+R8*SC] | [R8*SC+d32] | [SI+R8*SC] | [DI+R8*SC] | [R8+R8*SC] | [R9+R8*SC] | [R10+R8*SC] | [R11+R8*SC] | [R12+R8*SC] | [R8*SC+d32] | [R8*SC] | [R8*SC] |
1 | 001 | R9 | [AX+R9*SC] | [CX+R9*SC] | [DX+R9*SC] | [BX+R9*SC] | [SP+R9*SC] | [R9*SC+d32] | [SI+R9*SC] | [DI+R9*SC] | [R8+R9*SC] | [R9+R9*SC] | [R10+R9*SC] | [R11+R9*SC] | [R12+R9*SC] | [R9*SC+d32] | [R9*SC] | [R9*SC] |
1 | 010 | R10 | [AX+R10*SC] | [CX+R10*SC] | [DX+R10*SC] | [BX+R10*SC] | [SP+R10*SC] | [R10*SC+d32] | [SI+R10*SC] | [DI+R10*SC] | [R8+R10*SC] | [R9+R10*SC] | [R10+R10*SC] | [R11+R10*SC] | [R12+R10*SC] | [R10*SC+d32] | [R10*SC] | [R10*SC] |
1 | 011 | R11 | [AX+R11*SC] | [CX+R11*SC] | [DX+R11*SC] | [BX+R11*SC] | [SP+R11*SC] | [R11*SC+d32] | [SI+R11*SC] | [DI+R11*SC] | [R8+R11*SC] | [R9+R11*SC] | [R10+R11*SC] | [R11+R11*SC] | [R12+R11*SC] | [R11*SC+d32] | [R11*SC] | [R11*SC] |
1 | 100 | R12 | [AX+R12*SC] | [CX+R12*SC] | [DX+R12*SC] | [BX+R12*SC] | [SP+R12*SC] | [R12*SC+d32] | [SI+R12*SC] | [DI+R12*SC] | [R8+R12*SC] | [R9+R12*SC] | [R10+R12*SC] | [R11+R12*SC] | [R12+R12*SC] | [R12*SC+d32] | [R12*SC] | [R12*SC] |
1 | 101 | R13 | [AX+R13*SC] | [CX+R13*SC] | [DX+R13*SC] | [BX+R13*SC] | [SP+R13*SC] | [R13*SC+d32] | [SI+R13*SC] | [DI+R13*SC] | [R8+R13*SC] | [R9+R13*SC] | [R10+R13*SC] | [R11+R13*SC] | [R12+R13*SC] | [R13*SC+d32] | [R13*SC] | [R13*SC] |
1 | 110 | R14 | [AX+R14*SC] | [CX+R14*SC] | [DX+R14*SC] | [BX+R14*SC] | [SP+R14*SC] | [R14*SC+d32] | [SI+R14*SC] | [DI+R14*SC] | [R8+R14*SC] | [R9+R14*SC] | [R10+R14*SC] | [R11+R14*SC] | [R12+R14*SC] | [R14*SC+d32] | [R14*SC] | [R14*SC] |
1 | 111 | R15 | [AX+R15*SC] | [CX+R15*SC] | [DX+R15*SC] | [BX+R15*SC] | [SP+R15*SC] | [R15*SC+d32] | [SI+R15*SC] | [DI+R15*SC] | [R8+R15*SC] | [R9+R15*SC] | [R10+R15*SC] | [R11+R15*SC] | [R12+R15*SC] | [R15*SC+d32] | [R15*SC] | [R15*SC] |
REX.B | |||||||||||||||||||
0 | 1 | ||||||||||||||||||
Base | |||||||||||||||||||
000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | ||||
REX.X | Index | AX | CX | DX | BX | SP | BP | SI | DI | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15 | ||
0 | 000 | AX | [AX+AX*SC+d8] | [CX+AX*SC+d8] | [DX+AX*SC+d8] | [BX+AX*SC+d8] | [SP+AX*SC+d8] | [BP+AX*SC+d8] | [SI+AX*SC+d8] | [DI+AX*SC+d8] | [R8+AX*SC+d8] | [R9+AX*SC+d8] | [R10+AX*SC+d8] | [R11+AX*SC+d8] | [R12+AX*SC+d8] | [R13+AX*SC+d8] | [R14+AX*SC+d8] | [R15+AX*SC+d8] | |
0 | 001 | CX | [AX+CX*SC+d8] | [CX+CX*SC+d8] | [DX+CX*SC+d8] | [BX+CX*SC+d8] | [SP+CX*SC+d8] | [BP+CX*SC+d8] | [SI+CX*SC+d8] | [DI+CX*SC+d8] | [R8+CX*SC+d8] | [R9+CX*SC+d8] | [R10+CX*SC+d8] | [R11+CX*SC+d8] | [R12+CX*SC+d8] | [R13+CX*SC+d8] | [R14+CX*SC+d8] | [R15+CX*SC+d8] | |
0 | 010 | DX | [AX+DX*SC+d8] | [CX+DX*SC+d8] | [DX+DX*SC+d8] | [BX+DX*SC+d8] | [SP+DX*SC+d8] | [BP+DX*SC+d8] | [SI+DX*SC+d8] | [DI+DX*SC+d8] | [R8+DX*SC+d8] | [R9+DX*SC+d8] | [R10+DX*SC+d8] | [R11+DX*SC+d8] | [R12+DX*SC+d8] | [R13+DX*SC+d8] | [R14+DX*SC+d8] | [R15+DX*SC+d8] | |
0 | 011 | BX | [AX+BX*SC+d8] | [CX+BX*SC+d8] | [DX+BX*SC+d8] | [BX+BX*SC+d8] | [SP+BX*SC+d8] | [BP+BX*SC+d8] | [SI+BX*SC+d8] | [DI+BX*SC+d8] | [R8+BX*SC+d8] | [R9+BX*SC+d8] | [R10+BX*SC+d8] | [R11+BX*SC+d8] | [R12+BX*SC+d8] | [R13+BX*SC+d8] | [R14+BX*SC+d8] | [R15+BX*SC+d8] | |
0 | 100 | SP | [AX;d8] | [CX;d8] | [DX;d8] | [BX;d8] | [SP;d8] | [BP;d8] | [SI;d8] | [DI;d8] | [R8;d8] | [R9;d8] | [R10;d8] | [R11;d8] | [R12;d8] | [R13;d8] | [R14;d8] | [R15;d8] | |
0 | 101 | BP | [AX+BP*SC+d8] | [CX+BP*SC+d8] | [DX+BP*SC+d8] | [BX+BP*SC+d8] | [SP+BP*SC+d8] | [BP+BP*SC+d8] | [SI+BP*SC+d8] | [DI+BP*SC+d8] | [R8+BP*SC+d8] | [R9+BP*SC+d8] | [R10+BP*SC+d8] | [R11+BP*SC+d8] | [R12+BP*SC+d8] | [R13+BP*SC+d8] | [R14+BP*SC+d8] | [R15+BP*SC+d8] | |
0 | 110 | SI | [AX+SI*SC+d8] | [CX+SI*SC+d8] | [DX+SI*SC+d8] | [BX+SI*SC+d8] | [SP+SI*SC+d8] | [BP+SI*SC+d8] | [SI+SI*SC+d8] | [DI+SI*SC+d8] | [R8+SI*SC+d8] | [R9+SI*SC+d8] | [R10+SI*SC+d8] | [R11+SI*SC+d8] | [R12+SI*SC+d8] | [R13+SI*SC+d8] | [R14+SI*SC+d8] | [R15+SI*SC+d8] | |
0 | 111 | DI | [AX+DI*SC+d8] | [CX+DI*SC+d8] | [DX+DI*SC+d8] | [BX+DI*SC+d8] | [SP+DI*SC+d8] | [BP+DI*SC+d8] | [SI+DI*SC+d8] | [DI+DI*SC+d8] | [R8+DI*SC+d8] | [R9+DI*SC+d8] | [R10+DI*SC+d8] | [R11+DI*SC+d8] | [R12+DI*SC+d8] | [R13+DI*SC+d8] | [R14+DI*SC+d8] | [R15+DI*SC+d8] | |
1 | 000 | R8 | [AX+R8*SC+d8] | [CX+R8*SC+d8] | [DX+R8*SC+d8] | [BX+R8*SC+d8] | [SP+R8*SC+d8] | [BP+R8*SC+d8] | [SI+R8*SC+d8] | [DI+R8*SC+d8] | [R8+R8*SC+d8] | [R9+R8*SC+d8] | [R10+R8*SC+d8] | [R11+R8*SC+d8] | [R12+R8*SC+d8] | [R13+R8*SC+d8] | [R14+R8*SC+d8] | [R15+R8*SC+d8] | |
1 | 001 | R9 | [AX+R9*SC+d8] | [CX+R9*SC+d8] | [DX+R9*SC+d8] | [BX+R9*SC+d8] | [SP+R9*SC+d8] | [BP+R9*SC+d8] | [SI+R9*SC+d8] | [DI+R9*SC+d8] | [R8+R9*SC+d8] | [R9+R9*SC+d8] | [R10+R9*SC+d8] | [R11+R9*SC+d8] | [R12+R9*SC+d8] | [R13+R9*SC+d8] | [R14+R9*SC+d8] | [R15+R9*SC+d8] | |
1 | 010 | R10 | [AX+R10*SC+d8] | [CX+R10*SC+d8] | [DX+R10*SC+d8] | [BX+R10*SC+d8] | [SP+R10*SC+d8] | [BP+R10*SC+d8] | [SI+R10*SC+d8] | [DI+R10*SC+d8] | [R8+R10*SC+d8] | [R9+R10*SC+d8] | [R10+R10*SC+d8] | [R11+R10*SC+d8] | [R12+R10*SC+d8] | [R13+R10*SC+d8] | [R14+R10*SC+d8] | [R15+R10*SC+d8] | |
1 | 011 | R11 | [AX+R11*SC+d8] | [CX+R11*SC+d8] | [DX+R11*SC+d8] | [BX+R11*SC+d8] | [SP+R11*SC+d8] | [BP+R11*SC+d8] | [SI+R11*SC+d8] | [DI+R11*SC+d8] | [R8+R11*SC+d8] | [R9+R11*SC+d8] | [R10+R11*SC+d8] | [R11+R11*SC+d8] | [R12+R11*SC+d8] | [R13+R11*SC+d8] | [R14+R11*SC+d8] | [R15+R11*SC+d8] | |
1 | 100 | R12 | [AX+R12*SC+d8] | [CX+R12*SC+d8] | [DX+R12*SC+d8] | [BX+R12*SC+d8] | [SP+R12*SC+d8] | [BP+R12*SC+d8] | [SI+R12*SC+d8] | [DI+R12*SC+d8] | [R8+R12*SC+d8] | [R9+R12*SC+d8] | [R10+R12*SC+d8] | [R11+R12*SC+d8] | [R12+R12*SC+d8] | [R13+R12*SC+d8] | [R14+R12*SC+d8] | [R15+R12*SC+d8] | |
1 | 101 | R13 | [AX+R13*SC+d8] | [CX+R13*SC+d8] | [DX+R13*SC+d8] | [BX+R13*SC+d8] | [SP+R13*SC+d8] | [BP+R13*SC+d8] | [SI+R13*SC+d8] | [DI+R13*SC+d8] | [R8+R13*SC+d8] | [R9+R13*SC+d8] | [R10+R13*SC+d8] | [R11+R13*SC+d8] | [R12+R13*SC+d8] | [R13+R13*SC+d8] | [R14+R13*SC+d8] | [R15+R13*SC+d8] | |
1 | 110 | R14 | [AX+R14*SC+d8] | [CX+R14*SC+d8] | [DX+R14*SC+d8] | [BX+R14*SC+d8] | [SP+R14*SC+d8] | [BP+R14*SC+d8] | [SI+R14*SC+d8] | [DI+R14*SC+d8] | [R8+R14*SC+d8] | [R9+R14*SC+d8] | [R10+R14*SC+d8] | [R11+R14*SC+d8] | [R12+R14*SC+d8] | [R13+R14*SC+d8] | [R14+R14*SC+d8] | [R15+R14*SC+d8] | |
1 | 111 | R15 | [AX+R15*SC+d8] | [CX+R15*SC+d8] | [DX+R15*SC+d8] | [BX+R15*SC+d8] | [SP+R15*SC+d8] | [BP+R15*SC+d8] | [SI+R15*SC+d8] | [DI+R15*SC+d8] | [R8+R15*SC+d8] | [R9+R15*SC+d8] | [R10+R15*SC+d8] | [R11+R15*SC+d8] | [R12+R15*SC+d8] | [R13+R15*SC+d8] | [R14+R15*SC+d8] | [R15+R15*SC+d8] |
REX.B | ||||||||||||||||||
0 | 1 | |||||||||||||||||
Base | ||||||||||||||||||
000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | |||
REX.X | Index | AX | CX | DX | BX | SP | BP | SI | DI | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15 | |
0 | 000 | AX | [AX+AX*SC+d32] | [CX+AX*SC+d32] | [DX+AX*SC+d32] | [BX+AX*SC+d32] | [SP+AX*SC+d32] | [BP+AX*SC+d32] | [SI+AX*SC+d32] | [DI+AX*SC+d32] | [R8+AX*SC+d32] | [R9+AX*SC+d32] | [R10+AX*SC+d32] | [R11+AX*SC+d32] | [R12+AX*SC+d32] | [R13+AX*SC+d32] | [R14+AX*SC+d32] | [R15+AX*SC+d32] |
0 | 001 | CX | [AX+CX*SC+d32] | [CX+CX*SC+d32] | [DX+CX*SC+d32] | [BX+CX*SC+d32] | [SP+CX*SC+d32] | [BP+CX*SC+d32] | [SI+CX*SC+d32] | [DI+CX*SC+d32] | [R8+CX*SC+d32] | [R9+CX*SC+d32] | [R10+CX*SC+d32] | [R11+CX*SC+d32] | [R12+CX*SC+d32] | [R13+CX*SC+d32] | [R14+CX*SC+d32] | [R15+CX*SC+d32] |
0 | 010 | DX | [AX+DX*SC+d32] | [CX+DX*SC+d32] | [DX+DX*SC+d32] | [BX+DX*SC+d32] | [SP+DX*SC+d32] | [BP+DX*SC+d32] | [SI+DX*SC+d32] | [DI+DX*SC+d32] | [R8+DX*SC+d32] | [R9+DX*SC+d32] | [R10+DX*SC+d32] | [R11+DX*SC+d32] | [R12+DX*SC+d32] | [R13+DX*SC+d32] | [R14+DX*SC+d32] | [R15+DX*SC+d32] |
0 | 011 | BX | [AX+BX*SC+d32] | [CX+BX*SC+d32] | [DX+BX*SC+d32] | [BX+BX*SC+d32] | [SP+BX*SC+d32] | [BP+BX*SC+d32] | [SI+BX*SC+d32] | [DI+BX*SC+d32] | [R8+BX*SC+d32] | [R9+BX*SC+d32] | [R10+BX*SC+d32] | [R11+BX*SC+d32] | [R12+BX*SC+d32] | [R13+BX*SC+d32] | [R14+BX*SC+d32] | [R15+BX*SC+d32] |
0 | 100 | SP | [AX+d32] | [CX+d32] | [DX+d32] | [BX+d32] | [SP+d32] | [BP+d32] | [SI+d32] | [DI+d32] | [R8+d32] | [R9+d32] | [R10+d32] | [R11+d32] | [R12+d32] | [R13+d32] | [R14+d32] | [R15+d32] |
0 | 101 | BP | [AX+BP*SC+d32] | [CX+BP*SC+d32] | [DX+BP*SC+d32] | [BX+BP*SC+d32] | [SP+BP*SC+d32] | [BP+BP*SC+d32] | [SI+BP*SC+d32] | [DI+BP*SC+d32] | [R8+BP*SC+d32] | [R9+BP*SC+d32] | [R10+BP*SC+d32] | [R11+BP*SC+d32] | [R12+BP*SC+d32] | [R13+BP*SC+d32] | [R14+BP*SC+d32] | [R15+BP*SC+d32] |
0 | 110 | SI | [AX+SI*SC+d32] | [CX+SI*SC+d32] | [DX+SI*SC+d32] | [BX+SI*SC+d32] | [SP+SI*SC+d32] | [BP+SI*SC+d32] | [SI+SI*SC+d32] | [DI+SI*SC+d32] | [R8+SI*SC+d32] | [R9+SI*SC+d32] | [R10+SI*SC+d32] | [R11+SI*SC+d32] | [R12+SI*SC+d32] | [R13+SI*SC+d32] | [R14+SI*SC+d32] | [R15+SI*SC+d32] |
0 | 111 | DI | [AX+DI*SC+d32] | [CX+DI*SC+d32] | [DX+DI*SC+d32] | [BX+DI*SC+d32] | [SP+DI*SC+d32] | [BP+DI*SC+d32] | [SI+DI*SC+d32] | [DI+DI*SC+d32] | [R8+DI*SC+d32] | [R9+DI*SC+d32] | [R10+DI*SC+d32] | [R11+DI*SC+d32] | [R12+DI*SC+d32] | [R13+DI*SC+d32] | [R14+DI*SC+d32] | [R15+DI*SC+d32] |
1 | 000 | R8 | [AX+R8*SC+d32] | [CX+R8*SC+d32] | [DX+R8*SC+d32] | [BX+R8*SC+d32] | [SP+R8*SC+d32] | [BP+R8*SC+d32] | [SI+R8*SC+d32] | [DI+R8*SC+d32] | [R8+R8*SC+d32] | [R9+R8*SC+d32] | [R10+R8*SC+d32] | [R11+R8*SC+d32] | [R12+R8*SC+d32] | [R13+R8*SC+d32] | [R14+R8*SC+d32] | [R15+R8*SC+d32] |
1 | 001 | R9 | [AX+R9*SC+d32] | [CX+R9*SC+d32] | [DX+R9*SC+d32] | [BX+R9*SC+d32] | [SP+R9*SC+d32] | [BP+R9*SC+d32] | [SI+R9*SC+d32] | [DI+R9*SC+d32] | [R8+R9*SC+d32] | [R9+R9*SC+d32] | [R10+R9*SC+d32] | [R11+R9*SC+d32] | [R12+R9*SC+d32] | [R13+R9*SC+d32] | [R14+R9*SC+d32] | [R15+R9*SC+d32] |
1 | 010 | R10 | [AX+R10*SC+d32] | [CX+R10*SC+d32] | [DX+R10*SC+d32] | [BX+R10*SC+d32] | [SP+R10*SC+d32] | [BP+R10*SC+d32] | [SI+R10*SC+d32] | [DI+R10*SC+d32] | [R8+R10*SC+d32] | [R9+R10*SC+d32] | [R10+R10*SC+d32] | [R11+R10*SC+d32] | [R12+R10*SC+d32] | [R13+R10*SC+d32] | [R14+R10*SC+d32] | [R15+R10*SC+d32] |
1 | 011 | R11 | [AX+R11*SC+d32] | [CX+R11*SC+d32] | [DX+R11*SC+d32] | [BX+R11*SC+d32] | [SP+R11*SC+d32] | [BP+R11*SC+d32] | [SI+R11*SC+d32] | [DI+R11*SC+d32] | [R8+R11*SC+d32] | [R9+R11*SC+d32] | [R10+R11*SC+d32] | [R11+R11*SC+d32] | [R12+R11*SC+d32] | [R13+R11*SC+d32] | [R14+R11*SC+d32] | [R15+R11*SC+d32] |
1 | 100 | R12 | [AX+R12*SC+d32] | [CX+R12*SC+d32] | [DX+R12*SC+d32] | [BX+R12*SC+d32] | [SP+R12*SC+d32] | [BP+R12*SC+d32] | [SI+R12*SC+d32] | [DI+R12*SC+d32] | [R8+R12*SC+d32] | [R9+R12*SC+d32] | [R10+R12*SC+d32] | [R11+R12*SC+d32] | [R12+R12*SC+d32] | [R13+R12*SC+d32] | [R14+R12*SC+d32] | [R15+R12*SC+d32] |
1 | 101 | R13 | [AX+R13*SC+d32] | [CX+R13*SC+d32] | [DX+R13*SC+d32] | [BX+R13*SC+d32] | [SP+R13*SC+d32] | [BP+R13*SC+d32] | [SI+R13*SC+d32] | [DI+R13*SC+d32] | [R8+R13*SC+d32] | [R9+R13*SC+d32] | [R10+R13*SC+d32] | [R11+R13*SC+d32] | [R12+R13*SC+d32] | [R13+R13*SC+d32] | [R14+R13*SC+d32] | [R15+R13*SC+d32] |
1 | 110 | R14 | [AX+R14*SC+d32] | [CX+R14*SC+d32] | [DX+R14*SC+d32] | [BX+R14*SC+d32] | [SP+R14*SC+d32] | [BP+R14*SC+d32] | [SI+R14*SC+d32] | [DI+R14*SC+d32] | [R8+R14*SC+d32] | [R9+R14*SC+d32] | [R10+R14*SC+d32] | [R11+R14*SC+d32] | [R12+R14*SC+d32] | [R13+R14*SC+d32] | [R14+R14*SC+d32] | [R15+R14*SC+d32] |
1 | 111 | R15 | [AX+R15*SC+d32] | [CX+R15*SC+d32] | [DX+R15*SC+d32] | [BX+R15*SC+d32] | [SP+R15*SC+d32] | [BP+R15*SC+d32] | [SI+R15*SC+d32] | [DI+R15*SC+d32] | [R8+R15*SC+d32] | [R9+R15*SC+d32] | [R10+R15*SC+d32] | [R11+R15*SC+d32] | [R12+R15*SC+d32] | [R13+R15*SC+d32] | [R14+R15*SC+d32] | [R15+R15*SC+d32] |
Other
code | sr |
000 | ES |
001 | CS |
010 | SS |
011 | DS |
code | sreg |
000 | ES |
001 | CS |
010 | SS |
011 | DS |
100 | FS |
101 | GS |
110 | do not use |
111 | do not use |
w | size |
0 | 8bit |
1 | 16bit |
d | note |
0 | r/m←reg |
1 | reg←r/m |
0 | No sign extension |
1 | Sign extend 8bit immediate data to 16bit if W=1 |
code | inst | flags | other | ||
0000 | O | OF=1 | オーバーフローがある | ||
0001 | NO | OF=0 | オーバーフローがない | ||
0010 | C | CF=1 | キャリーがある | ||
0010 | NAE | CF=1 | 上でなく等しくない | < | unsigned |
0010 | B | CF=1 | 下 | < | unsigned |
0011 | NC | CF=0 | 下でない | unsigned | |
0011 | NB | CF=0 | キャリーがない | ||
0011 | AE | CF=0 | 上か等しい | unsigned | |
0100 | E | ZF=1 | 等しい | = | |
0100 | Z | ZF=1 | ゼロの場合 | ||
0101 | NE | ZF=0 | 等しくない | != | |
0101 | NZ | ZF=0 | ゼロでない | ||
0110 | NA | CF ∨ ZF=1 | 上でない | < | unsigned |
0110 | BE | CF ∨ ZF=1 | 下か等しい | < | unsigned |
0111 | NBE | CF ∨ ZF=0 | 下でなく等しくない | > | unsigned |
0111 | A | CF ∨ ZF=0 | 上 | > | unsigned |
1000 | S | SF=1 | 符号がある | <0 | |
1001 | NS | SF=0 | 符号がない | ≧0 | |
1010 | P | PF=1 | パリティがある | ||
1010 | PE | PF=1 | パリティが偶数 | ||
1011 | NP | PF=0 | パリティがない | ||
1011 | PO | PF=0 | パリティが奇数 | ||
1100 | L | SF ⊻ OF=1 | 小さい | < | signed |
1100 | NGE | SF ⊻ OF=1 | 大きくなく等しくない | < | signed |
1101 | GE | SF ⊻ OF=0 | 大きいか等しい | ≧ | signed |
1101 | NL | SF ⊻ OF=0 | 小さくない | ≧ | signed |
1110 | LE | ZF ∨ (SF ⊻ OF)=1 | 小さいか等しい | ≦ | signed |
1110 | NG | ZF ∨ (SF ⊻ OF)=1 | 大きくない | ≦ | signed |
1111 | G | ZF ∨ (SF ⊻ OF)=0 | 大きい | > | signed |
1111 | NLE | ZF ∨(SF ⊻ OF)=0 | 小さくなく等しくない | > | signed |
∨Boolean OR
⊻Boolean exclusive OR
∧ Boolean AND
¬ Boolean Not
% 余
>> 右シフト
<< 左シフト
⇄ 交換
1byte目のbit0 | 2バイト目のbit4~3 | inst | flags | 説明 |
0 | 00 | B | CF=1 | より下 |
0 | 01 | E | ZF=1 | 等しい |
0 | 10 | BE | CF ∨ ZF=1 | より下か等しい |
0 | 11 | U | P=1 | 順序付けなし |
1 | 00 | NB | CF=0 | より下でない |
1 | 01 | NE | ZF=0 | 等しくない |
1 | 10 | NBE | CF ∨ ZF=0 | より下でなく等しくない |
1 | 11 | NU | P=0 | 順序付けなし |
eee | Control Register Field | Debug Register Field | Test Register Field |
000 | CR0 | DR0 | |
001 | DR1 | ||
010 | CR2 | DR2 | |
011 | CR3 | DR3 | |
100 | |||
101 | |||
110 | DR6 | TR6 | |
111 | DR7 | TR7 |
code | reg |
000 | mm0 |
001 | mm1 |
010 | mm2 |
011 | mm3 |
100 | mm4 |
101 | mm5 |
110 | mm6 |
111 | mm7 |
code | データ・フィールドのグラニュラリティ(gg)のエンコーディング |
00 | パックドバイト |
01 | パックドワード |
10 | パックド・ダブルワード |
11 | クワッドワード |
code | reg |
000 | xmm0 |
001 | xmm1 |
010 | xmm2 |
011 | xmm3 |
100 | xmm4 |
101 | xmm5 |
110 | xmm6 |
111 | xmm7 |
Copyright (C) 2012 山本ワールド All Rights Reserved.