instrs: Enforce memory for VSIB encodings
This commit is contained in:
8
decode.c
8
decode.c
@@ -198,10 +198,6 @@ decode_modrm(const uint8_t* buffer, int len, DecodeMode mode, FdInstr* instr,
|
||||
uint8_t mod_reg = (modrm & 0x38) >> 3;
|
||||
uint8_t rm = modrm & 0x07;
|
||||
|
||||
// VSIB must have a memory operand with SIB byte.
|
||||
if (UNLIKELY(vsib) && (rm != 4 || mod == 3))
|
||||
return FD_ERR_UD;
|
||||
|
||||
bool is_seg = UNLIKELY(instr->type == FDI_MOV_G2S || instr->type == FDI_MOV_S2G);
|
||||
bool is_cr = UNLIKELY(instr->type == FDI_MOV_CR);
|
||||
bool is_dr = UNLIKELY(instr->type == FDI_MOV_DR);
|
||||
@@ -249,6 +245,10 @@ decode_modrm(const uint8_t* buffer, int len, DecodeMode mode, FdInstr* instr,
|
||||
return off;
|
||||
}
|
||||
|
||||
// VSIB must have a memory operand with SIB byte.
|
||||
if (UNLIKELY(vsib) && rm != 4)
|
||||
return FD_ERR_UD;
|
||||
|
||||
// SIB byte
|
||||
uint8_t scale = 0;
|
||||
uint8_t idx = 4;
|
||||
|
||||
16
instrs.txt
16
instrs.txt
@@ -1136,14 +1136,14 @@ VEX.66.W0.0f388c RVM XMM XMM XMM - VPMASKMOVD
|
||||
VEX.66.W1.0f388c RVM XMM XMM XMM - VPMASKMOVQ
|
||||
VEX.66.W0.0f388e MVR XMM XMM XMM - VPMASKMOVD
|
||||
VEX.66.W1.0f388e MVR XMM XMM XMM - VPMASKMOVQ
|
||||
VEX.66.W0.0f3890 RMV XMM XMM XMM - VPGATHERDD VSIB
|
||||
VEX.66.W1.0f3890 RMV XMM XMM XMM - VPGATHERDQ VSIB
|
||||
VEX.66.W0.0f3891 RMV XMM XMM XMM - VPGATHERQD VSIB
|
||||
VEX.66.W1.0f3891 RMV XMM XMM XMM - VPGATHERQQ VSIB
|
||||
VEX.66.W0.0f3892 RMV XMM XMM XMM - VGATHERDPS VSIB
|
||||
VEX.66.W1.0f3892 RMV XMM XMM XMM - VGATHERDPD VSIB
|
||||
VEX.66.W0.0f3893 RMV XMM XMM XMM - VGATHERQPS VSIB
|
||||
VEX.66.W1.0f3893 RMV XMM XMM XMM - VGATHERQPD VSIB
|
||||
VEX.66.W0.0f3890 RMV XMM MEMV XMM - VPGATHERDD VSIB
|
||||
VEX.66.W1.0f3890 RMV XMM MEMV XMM - VPGATHERDQ VSIB
|
||||
VEX.66.W0.0f3891 RMV XMM MEMV XMM - VPGATHERQD VSIB
|
||||
VEX.66.W1.0f3891 RMV XMM MEMV XMM - VPGATHERQQ VSIB
|
||||
VEX.66.W0.0f3892 RMV XMM MEMV XMM - VGATHERDPS VSIB
|
||||
VEX.66.W1.0f3892 RMV XMM MEMV XMM - VGATHERDPD VSIB
|
||||
VEX.66.W0.0f3893 RMV XMM MEMV XMM - VGATHERQPS VSIB
|
||||
VEX.66.W1.0f3893 RMV XMM MEMV XMM - VGATHERQPD VSIB
|
||||
VEX.66.W0.0f3896 RVM XMM XMM XMM - VFMADDADD132PS
|
||||
VEX.66.W1.0f3896 RVM XMM XMM XMM - VFMADDADD132PD
|
||||
VEX.66.W0.0f3897 RVM XMM XMM XMM - VFMSUBADD132PS
|
||||
|
||||
Reference in New Issue
Block a user