1
0
mirror of https://github.com/bitdefender/bddisasm.git synced 2024-12-28 00:48:09 +00:00
bddisasm/bddisasm_test/special/regressions_32.asm
Andrei Vlad LUTAS 752bc626c4 Fixed RET with immediate - the immediate is not sign-extended.
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.
2020-07-23 14:08:01 +03:00

19 lines
767 B
NASM

bits 32
db 0x66
pusha
pushad
db 0x66
popa
popad
db 0x26, 0x82, 0xc0, 0xe4 ; add al, 0xe4
db 0x26, 0x0f, 0x05 ; syscall - even though SDM states it's invalid, it works in 32 bit
db 0x26, 0x0f, 0x07 ; sysret - even though SDM states it's invalid, it works in 32 bit
db 0xf3, 0x66, 0x0f, 0xc7, 0xf8 ; rdpid eax - reg is 32 bit in 16/32 bit mode, 64 bit in 64 bit mode
db 0xf3, 0x0f, 0x1b, 0x05, 0xa4, 0x27, 0x4e, 0x6d ; bndmk bnd0, [0x6d4e27a4] - Works on 32, #UD in 64 bit mode if RIP relative.
db 0xc4, 0xe1, 0x3a, 0x10, 0xca ; vmovss xmm1, xmm0, xmm2 - bit 3 of vex.vvvv is ingored in 32 bit mode.