mirror of
https://github.com/bitdefender/bddisasm.git
synced 2024-11-29 10:58:06 +00:00
752bc626c4
Fixed VEX decoding in 32 bit mode - vex.vvvv bit 3 is simply ignored. Fixed several FMA instructions decoding (L/W flag should be ignored). Print the 64 bit immediate value in disassembly, instead of the raw immediate (note that the operand always contains the sign-extended, full immediate). XBEGIN always uses 32/64 bit RIP size (0x66 does not affect its size). Decode WBINVD even if it's preceded by 0x66/0xF2 prefixes. Several mnemonic fixes (FXSAVE64, FXRSTOR64, PUSHA/PUSHAD...). Properly decode VPERMIL2* instructions. Fixed SSE register decoding when it is encoded in immediate. Decode SCATTER instructions even though they use the VSIB index as source. Some disp8 fixes (t1s -> t1s8/t1s16). SYSCALL/SYSRET are decoded and executed in 32 bit compat modem, even though SDM states they are invalid. RDPID uses 32/64 bit reg size, never 16. Various other minor tweaks & fixes. Re-generated the test files, and added some more, new tests.
194 lines
9.9 KiB
Plaintext
194 lines
9.9 KiB
Plaintext
# Mnemonic Explicit Operands Implicit Operands Encoding Flags, Prefixes, Set, Category, Class, RW map, Additional ops
|
|
#------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
# XOP.mmmmm = 8
|
|
|
|
# 0x00 - 0x0F
|
|
|
|
# 0x10 - 0x1F
|
|
|
|
# 0x20 - 0x2F
|
|
|
|
# 0x30 - 0x3F
|
|
|
|
# 0x40 - 0x4F
|
|
|
|
# 0x50 - 0x5F
|
|
|
|
# 0x60 - 0x6F
|
|
|
|
# 0x70 - 0x7F
|
|
|
|
# 0x80 - 0x8F
|
|
VPMACSSWW Vdq,Hdq,Wdq,Ldq nil [xop m:8 0x85 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPMACSSWD Vdq,Hdq,Wdq,Ldq nil [xop m:8 0x86 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPMACSSDQL Vdq,Hdq,Wdq,Ldq nil [xop m:8 0x87 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPMACSSDD Vdq,Hdq,Wdq,Ldq nil [xop m:8 0x8E /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPMACSSDQH Vdq,Hdq,Wdq,Ldq nil [xop m:8 0x8F /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
|
|
# 0x90 - 0x9F
|
|
VPMACSWW Vdq,Hdq,Wdq,Ldq nil [xop m:8 0x95 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPMACSWD Vdq,Hdq,Wdq,Ldq nil [xop m:8 0x96 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPMACSDQL Vdq,Hdq,Wdq,Ldq nil [xop m:8 0x97 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPMACSDD Vdq,Hdq,Wdq,Ldq nil [xop m:8 0x9E /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPMACSDQH Vdq,Hdq,Wdq,Ldq nil [xop m:8 0x9F /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
|
|
# 0xA0 - 0xAF
|
|
VPCMOV Vx,Hx,Wx,Lx nil [xop m:8 w:0 0xA2 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPCMOV Vx,Hx,Lx,Wx nil [xop m:8 w:1 0xA2 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPPERM Vx,Hx,Wx,Lx nil [xop m:8 w:0 0xA3 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPPERM Vx,Hx,Lx,Wx nil [xop m:8 w:1 0xA3 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
VPMADCSSWD Vdq,Hdq,Wdq,Ldq nil [xop m:8 0xA6 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
|
|
# 0xB0 - 0xBF
|
|
VPMADCSWD Vdq,Hdq,Wdq,Ldq nil [xop m:8 0xB6 /r is4] s:XOP, t:XOP, w:W|R|R|R
|
|
|
|
# 0xC0 - 0xCF
|
|
VPROTB Vdq,Wdq,Ib nil [xop m:8 0xC0 /r ib] s:XOP, t:XOP, w:W|R|R
|
|
VPROTW Vdq,Wdq,Ib nil [xop m:8 0xC1 /r ib] s:XOP, t:XOP, w:W|R|R
|
|
VPROTD Vdq,Wdq,Ib nil [xop m:8 0xC2 /r ib] s:XOP, t:XOP, w:W|R|R
|
|
VPROTQ Vdq,Wdq,Ib nil [xop m:8 0xC3 /r ib] s:XOP, t:XOP, w:W|R|R
|
|
VPCOMB Vdq,Hdq,Wdq,Ib nil [xop m:8 0xCC /r ib] s:XOP, t:XOP, w:W|R|R|R
|
|
VPCOMW Vdq,Hdq,Wdq,Ib nil [xop m:8 0xCD /r ib] s:XOP, t:XOP, w:W|R|R|R
|
|
VPCOMD Vdq,Hdq,Wdq,Ib nil [xop m:8 0xCE /r ib] s:XOP, t:XOP, w:W|R|R|R
|
|
VPCOMQ Vdq,Hdq,Wdq,Ib nil [xop m:8 0xCF /r ib] s:XOP, t:XOP, w:W|R|R|R
|
|
|
|
# 0xD0 - 0xDF
|
|
|
|
# 0xE0 - 0xEF
|
|
VPCOMUB Vdq,Hdq,Wdq,Ib nil [xop m:8 0xEC /r ib] s:XOP, t:XOP, w:W|R|R|R
|
|
VPCOMUW Vdq,Hdq,Wdq,Ib nil [xop m:8 0xED /r ib] s:XOP, t:XOP, w:W|R|R|R
|
|
VPCOMUD Vdq,Hdq,Wdq,Ib nil [xop m:8 0xEE /r ib] s:XOP, t:XOP, w:W|R|R|R
|
|
VPCOMUQ Vdq,Hdq,Wdq,Ib nil [xop m:8 0xEF /r ib] s:XOP, t:XOP, w:W|R|R|R
|
|
|
|
# 0xF0 - 0xFF
|
|
|
|
|
|
|
|
# XOP.mmmmm = 9
|
|
|
|
# 0x00 - 0x0F
|
|
BLCFILL By,Ey nil [xop m:9 0x01 /1] s:TBM, t:BITBYTE, w:RW|R
|
|
BLSFILL By,Ey nil [xop m:9 0x01 /2] s:TBM, t:BITBYTE, w:RW|R
|
|
BLCS By,Ey nil [xop m:9 0x01 /3] s:TBM, t:BITBYTE, w:RW|R
|
|
TZMSK By,Ey nil [xop m:9 0x01 /4] s:TBM, t:BITBYTE, w:RW|R
|
|
BLCIC By,Ey nil [xop m:9 0x01 /5] s:TBM, t:BITBYTE, w:RW|R
|
|
BLSIC By,Ey nil [xop m:9 0x01 /6] s:TBM, t:BITBYTE, w:RW|R
|
|
T1MSKC By,Ey nil [xop m:9 0x01 /7] s:TBM, t:BITBYTE, w:RW|R
|
|
BLCMSK By,Ey nil [xop m:9 0x02 /1] s:TBM, t:BITBYTE, w:RW|R
|
|
BLCI By,Ey nil [xop m:9 0x02 /6] s:TBM, t:BITBYTE, w:RW|R
|
|
|
|
# 0x10 - 0x1F
|
|
LLWPCB Ry nil [xop m:9 0x12 /0:reg] s:LWP, t:LWP, w:R
|
|
SLWPCB Ry nil [xop m:9 0x12 /1:reg] s:LWP, t:LWP, w:R
|
|
|
|
# 0x20 - 0x2F
|
|
|
|
# 0x30 - 0x3F
|
|
|
|
# 0x40 - 0x4F
|
|
|
|
# 0x50 - 0x5F
|
|
|
|
# 0x60 - 0x6F
|
|
|
|
# 0x70 - 0x7F
|
|
|
|
# 0x80 - 0x8F
|
|
VFRCZPS Vx,Wx nil [xop m:9 0x80 /r] s:XOP, t:XOP, w:W|R
|
|
VFRCZPD Vx,Wx nil [xop m:9 0x81 /r] s:XOP, t:XOP, w:W|R
|
|
VFRCZSS Vdq,Wss nil [xop m:9 0x82 /r] s:XOP, t:XOP, w:W|R
|
|
VFRCZSD Vdq,Wsd nil [xop m:9 0x83 /r] s:XOP, t:XOP, w:W|R
|
|
VPSHAB Vdq,Wdq,Hdq nil [xop m:9 w:0 0x98 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHAB Vdq,Hdq,Wdq nil [xop m:9 w:1 0x98 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHAW Vdq,Wdq,Hdq nil [xop m:9 w:0 0x99 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHAW Vdq,Hdq,Wdq nil [xop m:9 w:1 0x99 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHAD Vdq,Wdq,Hdq nil [xop m:9 w:0 0x9A /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHAD Vdq,Hdq,Wdq nil [xop m:9 w:1 0x9A /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHAQ Vdq,Wdq,Hdq nil [xop m:9 w:0 0x9B /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHAQ Vdq,Hdq,Wdq nil [xop m:9 w:1 0x9B /r] s:XOP, t:XOP, w:W|R|R
|
|
|
|
# 0x90 - 0x9F
|
|
VPROTB Vdq,Wdq,Hdq nil [xop m:9 w:0 0x90 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPROTB Vdq,Hdq,Wdq nil [xop m:9 w:1 0x90 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPROTW Vdq,Wdq,Hdq nil [xop m:9 w:0 0x91 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPROTW Vdq,Hdq,Wdq nil [xop m:9 w:1 0x91 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPROTD Vdq,Wdq,Hdq nil [xop m:9 w:0 0x92 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPROTD Vdq,Hdq,Wdq nil [xop m:9 w:1 0x92 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPROTQ Vdq,Wdq,Hdq nil [xop m:9 w:0 0x93 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPROTQ Vdq,Hdq,Wdq nil [xop m:9 w:1 0x93 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHLB Vdq,Wdq,Hdq nil [xop m:9 w:0 0x94 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHLB Vdq,Hdq,Wdq nil [xop m:9 w:1 0x94 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHLW Vdq,Wdq,Hdq nil [xop m:9 w:0 0x95 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHLB Vdq,Hdq,Wdq nil [xop m:9 w:1 0x95 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHLD Vdq,Wdq,Hdq nil [xop m:9 w:0 0x96 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHLB Vdq,Hdq,Wdq nil [xop m:9 w:1 0x96 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHLQ Vdq,Wdq,Hdq nil [xop m:9 w:0 0x97 /r] s:XOP, t:XOP, w:W|R|R
|
|
VPSHLQ Vdq,Hdq,Wdq nil [xop m:9 w:1 0x97 /r] s:XOP, t:XOP, w:W|R|R
|
|
|
|
# 0xA0 - 0xAF
|
|
|
|
# 0xB0 - 0xBF
|
|
|
|
# 0xC0 - 0xCF
|
|
VPHADDBW Vdq,Wdq nil [xop m:9 0xC1 /r] s:XOP, t:XOP, w:W|R
|
|
VPHADDBD Vdq,Wdq nil [xop m:9 0xC2 /r] s:XOP, t:XOP, w:W|R
|
|
VPHADDBQ Vdq,Wdq nil [xop m:9 0xC3 /r] s:XOP, t:XOP, w:W|R
|
|
VPHADDWD Vdq,Wdq nil [xop m:9 0xC6 /r] s:XOP, t:XOP, w:W|R
|
|
VPHADDWQ Vdq,Wdq nil [xop m:9 0xC7 /r] s:XOP, t:XOP, w:W|R
|
|
VPHADDDQ Vdq,Wdq nil [xop m:9 0xCB /r] s:XOP, t:XOP, w:W|R
|
|
|
|
# 0xD0 - 0xDF
|
|
VPHADDUBW Vdq,Wdq nil [xop m:9 0xD1 /r] s:XOP, t:XOP, w:W|R
|
|
VPHADDUBD Vdq,Wdq nil [xop m:9 0xD2 /r] s:XOP, t:XOP, w:W|R
|
|
VPHADDUBQ Vdq,Wdq nil [xop m:9 0xD3 /r] s:XOP, t:XOP, w:W|R
|
|
VPHADDUWD Vdq,Wdq nil [xop m:9 0xD6 /r] s:XOP, t:XOP, w:W|R
|
|
VPHADDUWQ Vdq,Wdq nil [xop m:9 0xD7 /r] s:XOP, t:XOP, w:W|R
|
|
VPHADDUDQ Vdq,Wdq nil [xop m:9 0xDB /r] s:XOP, t:XOP, w:W|R
|
|
|
|
# 0xE0 - 0xEF
|
|
VPHSUBBW Vdq,Wdq nil [xop m:9 0xE1 /r] s:XOP, t:XOP, w:W|R
|
|
VPHSUBWD Vdq,Wdq nil [xop m:9 0xE2 /r] s:XOP, t:XOP, w:W|R
|
|
VPHSUBDQ Vdq,Wdq nil [xop m:9 0xE3 /r] s:XOP, t:XOP, w:W|R
|
|
|
|
# 0xF0 - 0xFF
|
|
|
|
|
|
# XOP.mmmmm = 0xA
|
|
|
|
# 0x00 - 0x0F
|
|
|
|
# 0x10 - 0x1F
|
|
BEXTR Gy,Ey,Id nil [xop m:A 0x10 /r id] s:TBM, t:BITBYTE, w:RW|R|R
|
|
LWPINS By,Ed,Id nil [xop m:A 0x12 /0 id] s:LWP, t:LWP, w:RW|R|R
|
|
LWPVAL By,Ed,Id nil [xop m:A 0x12 /1 id] s:LWP, t:LWP, w:RW|R|R
|
|
|
|
# 0x20 - 0x2F
|
|
|
|
# 0x30 - 0x3F
|
|
|
|
# 0x40 - 0x4F
|
|
|
|
# 0x50 - 0x5F
|
|
|
|
# 0x60 - 0x6F
|
|
|
|
# 0x70 - 0x7F
|
|
|
|
# 0x80 - 0x8F
|
|
|
|
# 0x90 - 0x9F
|
|
|
|
# 0xA0 - 0xAF
|
|
|
|
# 0xB0 - 0xBF
|
|
|
|
# 0xC0 - 0xCF
|
|
|
|
# 0xD0 - 0xDF
|
|
|
|
# 0xE0 - 0xEF
|
|
|
|
# 0xF0 - 0xFF
|
|
|
|
|