You can use keypresses including digits to toggle between x86 architecture versions.
Data transfer | |
Arithmetic | |
Logic | |
String manipulation | |
Control transfer | |
Processor control | |
Protection control | |
1 byte | |
2 bytes | |
3 bytes | |
4 bytes | |
5 bytes | |
1 byte + imm (2-3 bytes) | |
1 byte + r/m (2-4 bytes) | |
1 byte + r/m + imm (3-6 bytes) |
Bits [0,3] | |||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bits [4,7] | 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
a |
b |
c |
d |
e |
f |
|||||||||||||||||||||
0 |
add r/m, reg8 |
add r/m, reg16 |
add reg8, r/m |
add reg16, r/m |
add al, imm8 |
add ax, imm16 |
push es |
pop es |
or r/m, reg8 |
or r/m, reg16 |
or reg8, r/m |
or reg16, r/m |
or al, imm8 |
or ax, imm16 |
push cs |
pop cs |
undefined | extension | |||||||||||||||||||
1 |
adc r/m, reg8 |
adc r/m, reg16 |
adc reg8, r/m |
adc reg16, r/m |
adc al, imm8 |
adc ax, imm16 |
push ss |
pop ss |
sbb r/m, reg8 |
sbb r/m, reg16 |
sbb reg8, r/m |
sbb reg16, r/m |
sbb al, imm8 |
sbb ax, imm16 |
push ds |
pop ds |
|||||||||||||||||||||
2 |
and r/m, reg8 |
and r/m, reg16 |
and reg8, r/m |
and reg16, r/m |
and al, imm8 |
and ax, imm16 |
es: |
daa |
sub r/m, reg8 |
sub r/m, reg16 |
sub reg8, r/m |
sub reg16, r/m |
sub al, imm8 |
sub ax, imm16 |
cs: |
das |
|||||||||||||||||||||
3 |
xor r/m, reg8 |
xor r/m, reg16 |
xor reg8, r/m |
xor reg16, r/m |
xor al, imm8 |
xor ax, imm16 |
ss: |
aaa |
cmp r/m, reg8 |
cmp r/m, reg16 |
cmp reg8, r/m |
cmp reg16, r/m |
cmp al, imm8 |
cmp ax, imm16 |
ds: |
aas |
|||||||||||||||||||||
4 |
inc ax |
inc cx |
inc dx |
inc bx |
inc sp |
inc bp |
inc si |
inc di |
dec ax |
dec cx |
dec dx |
dec bx |
dec sp |
dec bp |
dec si |
dec di |
|||||||||||||||||||||
5 |
push ax |
push cx |
push dx |
push bx |
push sp |
push bp |
push si |
push di |
pop ax |
pop cx |
pop dx |
pop bx |
pop sp |
pop bp |
pop si |
pop di |
|||||||||||||||||||||
6 |
unpredictable | pusha |
unpredictable | popa |
unpredictable | bound reg16, r/m |
unpredictable | undefined | arpl r/m, reg16 |
unpredictable | undefined | fs: |
unpredictable | undefined | gs: |
unpredictable | undefined | operand size | unpredictable | undefined | address size | unpredictable | push imm16 |
unpredictable | imul reg, r/m, imm16 |
unpredictable | push imm8 |
unpredictable | imul reg, r/m, imm8 |
unpredictable | insb |
unpredictable | insw |
unpredictable | outsb |
unpredictable | outsw |
7 |
jo imm8 |
jno imm8 |
jc/jb/jnae imm8 |
jnc/jnb/jae imm8 |
jz/je imm8 |
jnz/jne imm8 |
jbe/jna imm8 |
jnbe/ja imm8 |
js imm8 |
jns imm8 |
jp/jpe imm8 |
jnp/jpo imm8 |
jl/jnge imm8 |
jnl/jge imm8 |
jle/jng imm8 |
jnle/jg imm8 |
|||||||||||||||||||||
8 |
op r/m, imm8 |
op r/m, imm16 |
op r/m, imm8 |
op r/m16, imm8 |
test reg8, r/m |
test reg16, r/m |
xchg reg8, r/m |
xchg reg16, r/m |
mov r/m, reg8 |
mov r/m, reg16 |
mov reg8, r/m |
mov reg16, r/m |
mov r/m, seg16 |
lea reg16, r/m |
mov seg16, r/m |
pop r/m |
|||||||||||||||||||||
9 |
xchg ax, ax |
nop |
xchg ax, cx |
xchg ax, dx |
xchg ax, bx |
xchg ax, sp |
xchg ax, bp |
xchg ax, si |
xchg ax, di |
cbw |
cbw/cwde |
cwd |
cwd/cdq |
call imm16:imm16 |
wait |
pushf |
popf |
sahf |
lahf |
||||||||||||||||||
a |
mov al, mem16 |
mov ax, mem16 |
mov mem16, al |
mov mem16, ax |
movsb |
movsw |
cmpsb |
cmpsw |
test al, imm8 |
test ax, imm16 |
stosb |
stosw |
lodsb |
lodsw |
scasb |
scasw |
|||||||||||||||||||||
b |
mov al, imm8 |
mov cl, imm8 |
mov dl, imm8 |
mov bl, imm8 |
mov ah, imm8 |
mov ch, imm8 |
mov dh, imm8 |
mov bh, imm8 |
mov ax, imm16 |
mov cx, imm16 |
mov dx, imm16 |
mov bx, imm16 |
mov sp, imm16 |
mov bp, imm16 |
mov si, imm16 |
mov di, imm16 |
|||||||||||||||||||||
c |
unpredictable | shift r/m8, imm8 |
unpredictable | shift r/m16, imm8 |
ret imm16 |
ret |
les reg16, r/m |
lds reg16, r/m |
mov r/m, imm8 |
mov r/m, imm16 |
unpredictable | enter imm16, imm8 |
unpredictable | leave |
retf imm16 |
retf |
int3 |
int imm8 |
into |
iret |
|||||||||||||||||
d |
shift r/m8, 1 |
shift r/m16, 1 |
shift r/m8, cl |
shift r/m16, cl |
aam imm8 |
aad imm8 |
salc |
xlat |
esc imm6, r/m |
||||||||||||||||||||||||||||
e |
loopnz/loopne imm8 |
loopz/loope imm8 |
loop imm8 |
jcxz imm8 |
in al, imm8 |
in ax, imm8 |
out imm8, al |
out imm8, ax |
call imm16 |
jmp imm16 |
jmp imm16:imm16 |
jmp imm8 |
in al, dx |
in ax, dx |
out dx, al |
out dx, ax |
|||||||||||||||||||||
f |
lock |
unpredictable | undefined | user |
int1 |
repnz |
repz |
hlt |
cmc |
op r/m8[, imm8] |
op r/m16[, imm16] |
clc |
stc |
cli |
sti |
cld |
std |
inc/dec r/m8 |
op r/m16 |
Bits [3, 5] | ||||||||
---|---|---|---|---|---|---|---|---|
Primary opcode(s) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
80-83 | add |
or |
adc |
sbb |
and |
sub |
xor |
cmp |
d0-d3 | rol |
ror |
rcl |
rcr |
shl/sal |
shr |
unpredictable | sar |
f6-f7 | test |
undefined | not |
neg |
mul |
imul |
div |
idiv |
fe | inc |
dec |
undefined | undefined | undefined | undefined | undefined | undefined |
ff | inc |
dec |
call near |
call far |
jmp near |
jmp far |
push |
undefined |
Bits [0,3] | |||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bits [4,7] | 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
a |
b |
c |
d |
e |
f |
|||||||||||||||||||||||||||||||||
0 |
op r/m16 |
op r/m16 |
lar reg16, r/m |
lsl reg16, r/m |
storeall |
undefined | loadall |
undefined | syscall |
clts |
undefined | loadalld |
undefined | sysret |
undefined | invd |
undefined | wbinvd |
undefined | undefined | ud2 |
undefined | undefined | undefined | undefined | ||||||||||||||||||||||||
1 |
undefined | umov r/m, reg8 |
undefined | umov r/m, reg16 |
undefined | umov reg8, r/m |
undefined | umov reg16, r/m |
undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | |||||||||||||||||||||||||||||
2 |
undefined | mov reg32, crn |
undefined | mov reg32, drn |
undefined | mov crn, reg32 |
undefined | mov drn, reg32 |
undefined | mov reg32, trn |
undefined | undefined | mov trn, reg32 |
undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | |||||||||||||||||||||||||||
3 |
undefined | wrmsr |
undefined | rdtsc |
undefined | rdmsr |
undefined | rdpmc |
undefined | sysenter |
undefined | sysexit |
undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | |||||||||||||||||||||||||||
4 |
undefined | cmovo reg, r/m |
undefined | cmovno reg, r/m |
undefined | cmovc/cmovb/cmovnae reg, r/m |
undefined | cmovnc/cmovnb/cmovae reg, r/m |
undefined | cmovz/cmove reg, r/m |
undefined | cmovnz/cmovne reg, r/m |
undefined | cmovbe/cmovna reg, r/m |
undefined | cmovnbe/cmova reg, r/m |
undefined | cmovs reg, r/m |
undefined | cmovns reg, r/m |
undefined | cmovp/cmovpe reg, r/m |
undefined | cmovnp/cmovpo reg, r/m |
undefined | cmovl/cmovnge reg, r/m |
undefined | cmovnl/cmovge reg, r/m |
undefined | cmovle/cmovng reg, r/m |
undefined | cmovnle/cmovg reg, r/m |
|||||||||||||||||
5 |
undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | |||||||||||||||||||||||||||||||||
6 |
undefined | punpcklbw mm, mm/m32 |
undefined | punpcklwd mm, mm/m32 |
undefined | punpckldq mm, mm/m32 |
undefined | packsswb mm, mm/m64 |
undefined | pcmpgtb mm, mm/m64 |
undefined | pcmpgtw mm, mm/m64 |
undefined | pcmpgtd mm, mm/m64 |
undefined | packuswb mm, mm/m64 |
undefined | punpckhbw mm, mm/m64 |
undefined | punpckhwd mm, mm/m64 |
undefined | punpckhdq mm, mm/m64 |
undefined | packssdw mm, mm/m64 |
undefined | undefined | undefined | movd mm, r/m |
undefined | movq mm, mm/m64 |
|||||||||||||||||||
7 |
undefined | undefined | pshimw mm, imm8 |
undefined | pshimd mm, imm8 |
undefined | pshimq mm, imm8 |
undefined | pcmpeqb mm, mm/m64 |
undefined | pcmpeqw mm, mm/m64 |
undefined | pcmpeqd mm, mm/m64 |
undefined | emms |
undefined | undefined | undefined | undefined | undefined | undefined | undefined | movd r/m, mm |
undefined | movq mm/m64, mm |
||||||||||||||||||||||||
8 |
undefined | jo imm |
undefined | jno imm |
undefined | jc/jb/jnae imm |
undefined | jnc/jnb/jae imm |
undefined | jz/je imm |
undefined | jnz/jne imm |
undefined | jbe/jna imm |
undefined | jnbe/ja imm |
undefined | js imm |
undefined | jns imm |
undefined | jp/jpe imm |
undefined | jnp/jpo imm |
undefined | jl/jnge imm |
undefined | jnl/jge imm |
undefined | jle/jng imm |
undefined | jnle/jg imm |
|||||||||||||||||
9 |
undefined | opo r/m |
undefined | opno r/m |
undefined | opc/opb/opnae r/m |
undefined | opnc/opnb/opae r/m |
undefined | opz/ope r/m |
undefined | opnz/opne r/m |
undefined | opbe/opna r/m |
undefined | opnbe/opa r/m |
undefined | ops r/m |
undefined | opns r/m |
undefined | opp/oppe r/m |
undefined | opnp/oppo r/m |
undefined | opl/opnge r/m |
undefined | opnl/opge r/m |
undefined | ople/opng r/m |
undefined | opnle/opg r/m |
|||||||||||||||||
a |
undefined | push fs |
undefined | pop fs |
undefined | cpuid |
undefined | bt r/m, reg |
undefined | shld r/m, reg, imm8 |
undefined | shld r/m, reg, cl |
undefined | xbts reg, r/m |
undefined | undefined | ibts r/m, reg |
undefined | undefined | push gs |
undefined | pop gs |
undefined | rsm |
undefined | bts r/m, reg |
undefined | shrd r/m, reg, imm8 |
undefined | shrd r/m, reg, cl |
undefined | undefined | imul reg, r/m |
||||||||||||||||
b |
undefined | cmpxchg r/m, reg8 |
undefined | cmpxchg r/m, reg16 |
undefined | lss reg16, r/m |
undefined | btr r/m, reg |
undefined | lfs reg16, r/m |
undefined | lgs reg16, r/m |
undefined | movzx reg16, r/m8 |
undefined | movzx reg32, r/m16 |
undefined | undefined | ud1 reg, r/m |
undefined | op r/m, imm8 |
undefined | btc r/m, reg |
undefined | bsf reg, r/m |
undefined | bsr reg, r/m |
undefined | movsx reg16, r/m8 |
undefined | movsx reg32, r/m16 |
||||||||||||||||||
c |
undefined | xadd r/m, reg8 |
undefined | xadd r/m, reg16 |
undefined | undefined | undefined | undefined | undefined | undefined | cmpxchg8b mem64 |
undefined | bswap ax/eax |
undefined | bswap cx/ecx |
undefined | bswap dx/edx |
undefined | bswap bx/ebx |
undefined | bswap sp/esp |
undefined | bswap bp/ebp |
undefined | bswap si/esi |
undefined | bswap di/edi |
||||||||||||||||||||||
d |
undefined | undefined | psrlw mm, mm/m64 |
undefined | psrld mm, mm/m64 |
undefined | psrlq mm, mm/m64 |
undefined | undefined | pmullw mm, mm/m64 |
undefined | undefined | undefined | psubusb mm, mm/m64 |
undefined | psubusw mm, mm/m64 |
undefined | undefined | pand mm, mm/m64 |
undefined | paddusb mm, mm/m64 |
undefined | paddusw mm, mm/m64 |
undefined | undefined | pandn mm, mm/m64 |
|||||||||||||||||||||||
e |
undefined | undefined | psraw mm, mm/m64 |
undefined | psrad mm, mm/m64 |
undefined | undefined | undefined | pmulhw mm, mm/m64 |
undefined | undefined | undefined | psubsb mm, mm/m64 |
undefined | psubsw mm, mm/m64 |
undefined | undefined | por mm, mm/m64 |
undefined | paddsb mm, mm/m64 |
undefined | paddsw mm, mm/m64 |
undefined | undefined | pxor mm, mm/m64 |
||||||||||||||||||||||||
f |
undefined | undefined | psllw mm, mm/m64 |
undefined | pslld mm, mm/m64 |
undefined | psllq mm, mm/m64 |
undefined | undefined | pmaddwd mm, mm/m64 |
undefined | undefined | undefined | psubb mm, mm/m64 |
undefined | psubw mm, mm/m64 |
undefined | psubd mm, mm/m64 |
undefined | undefined | paddb mm, mm/m64 |
undefined | paddw mm, mm/m64 |
undefined | paddd mm, mm/m64 |
undefined | ud0 |
Bits [3, 5] | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Primary opcode(s) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||
00 | sldt |
str |
lldt |
ltr |
verr |
verw |
undefined | undefined | invlpg |
||||||||||
01 | sgdt |
sidt |
lgdt |
lidt |
smsw |
undefined | lmsw |
undefined | |||||||||||
71-73 | undefined | undefined | undefined | psrl |
undefined | undefined | psra |
undefined | undefined | psll |
undefined | ||||||||
90-9f | set |
undefined | undefined | undefined | undefined | undefined | undefined | undefined | |||||||||||
ba | undefined | undefined | undefined | undefined | bt |
bts |
btr |
btc |