diff --git a/bddisasm/include/instructions.h b/bddisasm/include/instructions.h index eca5284..934c5b6 100644 --- a/bddisasm/include/instructions.h +++ b/bddisasm/include/instructions.h @@ -12517,7 +12517,7 @@ const ND_INSTRUCTION gInstructions[2589] = }, }, - // Pos:754 Instruction:"NOP Gv,Ev" Encoding:"0x0F 0x1A /r"/"RM" + // Pos:754 Instruction:"NOP Ev,Gv" Encoding:"0x0F 0x1A /r"/"MR" { ND_INS_NOP, ND_CAT_WIDENOP, ND_SET_PPRO, 478, 0, @@ -12528,8 +12528,8 @@ const ND_INSTRUCTION gInstructions[2589] = 0, 0, { - OP(ND_OPT_G, ND_OPS_v, 0, ND_OPA_N, 0, 0), OP(ND_OPT_E, ND_OPS_v, 0, ND_OPA_N, 0, 0), + OP(ND_OPT_G, ND_OPS_v, 0, ND_OPA_N, 0, 0), }, }, @@ -29451,7 +29451,7 @@ const ND_INSTRUCTION gInstructions[2589] = }, }, - // Pos:1762 Instruction:"VMCALL" Encoding:"0x0F 0x01 /0xC1"/"" + // Pos:1762 Instruction:"VMCALL" Encoding:"NP 0x0F 0x01 /0xC1"/"" { ND_INS_VMCALL, ND_CAT_VTX, ND_SET_VTX, 1075, 0, @@ -29667,7 +29667,7 @@ const ND_INSTRUCTION gInstructions[2589] = }, }, - // Pos:1775 Instruction:"VMLAUNCH" Encoding:"0x0F 0x01 /0xC2"/"" + // Pos:1775 Instruction:"VMLAUNCH" Encoding:"NP 0x0F 0x01 /0xC2"/"" { ND_INS_VMLAUNCH, ND_CAT_VTX, ND_SET_VTX, 1083, 0, @@ -31431,7 +31431,7 @@ const ND_INSTRUCTION gInstructions[2589] = }, }, - // Pos:1882 Instruction:"VMRESUME" Encoding:"0x0F 0x01 /0xC3"/"" + // Pos:1882 Instruction:"VMRESUME" Encoding:"NP 0x0F 0x01 /0xC3"/"" { ND_INS_VMRESUME, ND_CAT_VTX, ND_SET_VTX, 1121, 0, @@ -31633,7 +31633,7 @@ const ND_INSTRUCTION gInstructions[2589] = }, }, - // Pos:1894 Instruction:"VMXOFF" Encoding:"0x0F 0x01 /0xC4"/"" + // Pos:1894 Instruction:"VMXOFF" Encoding:"NP 0x0F 0x01 /0xC4"/"" { ND_INS_VMXOFF, ND_CAT_VTX, ND_SET_VTX, 1129, 0, diff --git a/bddisasm/include/table_root.h b/bddisasm/include/table_root.h index a86cb29..4634479 100644 --- a/bddisasm/include/table_root.h +++ b/bddisasm/include/table_root.h @@ -4480,39 +4480,83 @@ const ND_TABLE_MPREFIX gRootTable_root_0f_01_reg_00_05_mprefix = } }; -const ND_TABLE_INSTRUCTION gRootTable_root_0f_01_reg_00_01_leaf = +const ND_TABLE_INSTRUCTION gRootTable_root_0f_01_reg_00_01_NP_leaf = { ND_ILUT_INSTRUCTION, (const void *)&gInstructions[1762] }; -const ND_TABLE_INSTRUCTION gRootTable_root_0f_01_reg_00_02_leaf = +const ND_TABLE_MPREFIX gRootTable_root_0f_01_reg_00_01_mprefix = +{ + ND_ILUT_MAN_PREFIX, + { + /* 00 */ (const void *)&gRootTable_root_0f_01_reg_00_01_NP_leaf, + /* 01 */ NULL, + /* 02 */ NULL, + /* 03 */ NULL, + } +}; + +const ND_TABLE_INSTRUCTION gRootTable_root_0f_01_reg_00_02_NP_leaf = { ND_ILUT_INSTRUCTION, (const void *)&gInstructions[1775] }; -const ND_TABLE_INSTRUCTION gRootTable_root_0f_01_reg_00_03_leaf = +const ND_TABLE_MPREFIX gRootTable_root_0f_01_reg_00_02_mprefix = +{ + ND_ILUT_MAN_PREFIX, + { + /* 00 */ (const void *)&gRootTable_root_0f_01_reg_00_02_NP_leaf, + /* 01 */ NULL, + /* 02 */ NULL, + /* 03 */ NULL, + } +}; + +const ND_TABLE_INSTRUCTION gRootTable_root_0f_01_reg_00_03_NP_leaf = { ND_ILUT_INSTRUCTION, (const void *)&gInstructions[1882] }; -const ND_TABLE_INSTRUCTION gRootTable_root_0f_01_reg_00_04_leaf = +const ND_TABLE_MPREFIX gRootTable_root_0f_01_reg_00_03_mprefix = +{ + ND_ILUT_MAN_PREFIX, + { + /* 00 */ (const void *)&gRootTable_root_0f_01_reg_00_03_NP_leaf, + /* 01 */ NULL, + /* 02 */ NULL, + /* 03 */ NULL, + } +}; + +const ND_TABLE_INSTRUCTION gRootTable_root_0f_01_reg_00_04_NP_leaf = { ND_ILUT_INSTRUCTION, (const void *)&gInstructions[1894] }; +const ND_TABLE_MPREFIX gRootTable_root_0f_01_reg_00_04_mprefix = +{ + ND_ILUT_MAN_PREFIX, + { + /* 00 */ (const void *)&gRootTable_root_0f_01_reg_00_04_NP_leaf, + /* 01 */ NULL, + /* 02 */ NULL, + /* 03 */ NULL, + } +}; + const ND_TABLE_MODRM_RM gRootTable_root_0f_01_reg_00_modrmrm = { ND_ILUT_MODRM_RM, { /* 00 */ (const void *)&gRootTable_root_0f_01_reg_00_00_mprefix, - /* 01 */ (const void *)&gRootTable_root_0f_01_reg_00_01_leaf, - /* 02 */ (const void *)&gRootTable_root_0f_01_reg_00_02_leaf, - /* 03 */ (const void *)&gRootTable_root_0f_01_reg_00_03_leaf, - /* 04 */ (const void *)&gRootTable_root_0f_01_reg_00_04_leaf, + /* 01 */ (const void *)&gRootTable_root_0f_01_reg_00_01_mprefix, + /* 02 */ (const void *)&gRootTable_root_0f_01_reg_00_02_mprefix, + /* 03 */ (const void *)&gRootTable_root_0f_01_reg_00_03_mprefix, + /* 04 */ (const void *)&gRootTable_root_0f_01_reg_00_04_mprefix, /* 05 */ (const void *)&gRootTable_root_0f_01_reg_00_05_mprefix, /* 06 */ NULL, /* 07 */ NULL, diff --git a/inc/version.h b/inc/version.h index b90a39d..18e66ad 100644 --- a/inc/version.h +++ b/inc/version.h @@ -7,6 +7,6 @@ #define DISASM_VERSION_MAJOR 1 #define DISASM_VERSION_MINOR 32 -#define DISASM_VERSION_REVISION 3 +#define DISASM_VERSION_REVISION 4 #endif // DISASM_VER_H diff --git a/isagenerator/instructions/table_0F.dat b/isagenerator/instructions/table_0F.dat index 77d5432..a993e0c 100644 --- a/isagenerator/instructions/table_0F.dat +++ b/isagenerator/instructions/table_0F.dat @@ -22,10 +22,10 @@ LMSW Ew CR0 [ 0x0F 0x01 /6 INVLPG Mb nil [ 0x0F 0x01 /7:mem] s:I486REAL, t:SYSTEM, w:R, a:AG, m:KERNEL|NOV86 RSTORSSP Mq SSP [ 0xF3 0x0F 0x01 /5:mem] s:CET_SS, t:CET, a:SHS, w:RW|RW, f:CF=m|ZF=0|PF=0|AF=0|OF=0|SF=0 ENCLV nil EAX,RBX,RCX,RDX [ NP 0x0F 0x01 /0xC0] s:SGX, t:SGX, w:R|CRW|CRW|CRW, m:KERNEL|NOSMM|NOTSX|VMX -VMCALL nil nil [ 0x0F 0x01 /0xC1] s:VTX, t:VTX, m:VMX|NOSGX -VMLAUNCH nil Fv [ 0x0F 0x01 /0xC2] s:VTX, t:VTX, w:W, f:VMX, m:VMXROOT -VMRESUME nil Fv [ 0x0F 0x01 /0xC3] s:VTX, t:VTX, w:W, f:VMX, m:VMXROOT -VMXOFF nil Fv [ 0x0F 0x01 /0xC4] s:VTX, t:VTX, w:W, f:VMX, m:VMXROOT +VMCALL nil nil [ NP 0x0F 0x01 /0xC1] s:VTX, t:VTX, m:VMX|NOSGX +VMLAUNCH nil Fv [ NP 0x0F 0x01 /0xC2] s:VTX, t:VTX, w:W, f:VMX, m:VMXROOT +VMRESUME nil Fv [ NP 0x0F 0x01 /0xC3] s:VTX, t:VTX, w:W, f:VMX, m:VMXROOT +VMXOFF nil Fv [ NP 0x0F 0x01 /0xC4] s:VTX, t:VTX, w:W, f:VMX, m:VMXROOT PCONFIG nil EAX,RBX,RCX,RDX [ NP 0x0F 0x01 /0xC5] s:PCONFIG, t:PCONFIG, w:R|RW|RW|RW, m:NOV86 MONITOR nil EAX,ECX,EDX [ NP 0x0F 0x01 /0xC8] s:SSE3, t:MISC, w:R|R|R, i:MONITOR, m:KERNEL|NOV86 MWAIT nil EAX,ECX [ NP 0x0F 0x01 /0xC9] s:SSE3, t:MISC, w:RW|R, i:MONITOR, m:KERNEL|NOV86 @@ -157,7 +157,7 @@ NOP Ev nil [ 0x0F 0x19 /r # that Xed doesn't do those checks either). # MPX not used, these guys are wide NOPs. -NOP Gv,Ev nil [ 0x0F 0x1A /r] s:PPRO, t:WIDENOP, w:N|N +NOP Ev,Gv nil [ 0x0F 0x1A /r] s:PPRO, t:WIDENOP, w:N|N NOP Gv,Ev nil [ 0x0F 0x1B /r] s:PPRO, t:WIDENOP, w:N|N NOP Ev,Gv nil [ 0x0F 0x1C /r] s:PPRO, t:WIDENOP, w:N|N NOP Ev,Gv nil [ 0x0F 0x1D /r] s:PPRO, t:WIDENOP, w:N|N diff --git a/pybddisasm/setup.py b/pybddisasm/setup.py index 0388357..6dbc32c 100644 --- a/pybddisasm/setup.py +++ b/pybddisasm/setup.py @@ -12,7 +12,7 @@ from setuptools import find_packages, setup, Command, Extension, Distribution from codecs import open VERSION = (0, 1, 3) -LIBRARY_VERSION = (1, 32, 3) +LIBRARY_VERSION = (1, 32, 4) LIBRARY_INSTRUX_SIZE = 864 packages = ['pybddisasm']