Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 87 additions & 1 deletion arch/X86/X86Mapping.c
Original file line number Diff line number Diff line change
Expand Up @@ -1018,6 +1018,7 @@ void X86_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
break;

case X86_INS_SCASB:
case X86_INS_SCASD:
case X86_INS_SCASW:
case X86_INS_SCASQ:
case X86_INS_STOSB:
Expand Down Expand Up @@ -1114,7 +1115,6 @@ void X86_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
insn->detail->regs_read,
insn->detail->regs_read_count,
X86_REG_ESP, X86_REG_SP);

arr_replace(
insn->detail->regs_write,
insn->detail->regs_write_count,
Expand All @@ -1141,7 +1141,93 @@ void X86_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
insn->detail->regs_write,
insn->detail->regs_write_count,
X86_REG_ESP, X86_REG_RSP);
}
break;

case X86_INS_INSB:
case X86_INS_INSW:
case X86_INS_INSD:
switch (h->mode) {
default:
break;
case CS_MODE_16:
arr_replace(
insn->detail->regs_read,
insn->detail->regs_read_count,
X86_REG_EDI, X86_REG_DI);
arr_replace(
insn->detail->regs_write,
insn->detail->regs_write_count,
X86_REG_EDI, X86_REG_DI);
break;
case CS_MODE_64:
arr_replace(
insn->detail->regs_read,
insn->detail->regs_read_count,
X86_REG_EDI, X86_REG_RDI);
arr_replace(
insn->detail->regs_write,
insn->detail->regs_write_count,
X86_REG_EDI, X86_REG_RDI);
break;
}
break;

case X86_INS_OUTSB:
case X86_INS_OUTSW:
case X86_INS_OUTSD:
switch (h->mode) {
default:
break;
case CS_MODE_64:
arr_replace(
insn->detail->regs_read,
insn->detail->regs_read_count,
X86_REG_ESI, X86_REG_RSI);
arr_replace(
insn->detail->regs_write,
insn->detail->regs_write_count,
X86_REG_ESI, X86_REG_RSI);
break;
case CS_MODE_16:
arr_replace(
insn->detail->regs_read,
insn->detail->regs_read_count,
X86_REG_ESI, X86_REG_SI);
arr_replace(
insn->detail->regs_write,
insn->detail->regs_write_count,
X86_REG_ESI, X86_REG_SI);
break;
}
break;
}

switch (insn->id) {
default:
break;
case X86_INS_LODSB:
case X86_INS_LODSD:
case X86_INS_LODSW:
case X86_INS_CMPSB:
case X86_INS_CMPSD:
case X86_INS_CMPSW:
case X86_INS_MOVSB:
case X86_INS_MOVSW:
case X86_INS_MOVSD:
case X86_INS_OUTSB:
case X86_INS_OUTSW:
case X86_INS_OUTSD:
switch (h->mode) {
default:
break;
case CS_MODE_16:
case CS_MODE_32: {
int pos = insn->detail->regs_read_count;
insn->detail->regs_read[pos] =
X86_REG_DS;
insn->detail->regs_read_count += 1;
} break;
}
break;
}
Expand Down
22 changes: 11 additions & 11 deletions arch/X86/X86MappingInsn.inc
Original file line number Diff line number Diff line change
Expand Up @@ -6229,7 +6229,7 @@
{
X86_INSB, X86_INS_INSB, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_DX, X86_REG_EDI, X86_REG_EFLAGS, 0 }, { X86_REG_EDI, 0 }, { 0 }, 0, 0
{ X86_REG_DX, X86_REG_EFLAGS, 0 }, { X86_REG_EDI, 0 }, { 0 }, 0, 0
#endif
},

Expand Down Expand Up @@ -6271,7 +6271,7 @@
{
X86_INSW, X86_INS_INSW, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_DX, X86_REG_EDI, X86_REG_EFLAGS, 0 }, { X86_REG_EDI, 0 }, { 0 }, 0, 0
{ X86_REG_DX, X86_REG_EFLAGS, 0 }, { X86_REG_EDI, 0 }, { 0 }, 0, 0
#endif
},

Expand Down Expand Up @@ -7909,28 +7909,28 @@
{
X86_LODSB, X86_INS_LODSB, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_ESI, X86_REG_DS, X86_REG_EFLAGS, 0 }, { X86_REG_AL, X86_REG_ESI, 0 }, { 0 }, 0, 0
{ X86_REG_ESI, X86_REG_EFLAGS, 0 }, { X86_REG_AL, X86_REG_ESI, 0 }, { 0 }, 0, 0
#endif
},

{
X86_LODSL, X86_INS_LODSD, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_ESI, X86_REG_DS, X86_REG_EFLAGS, 0 }, { X86_REG_EAX, X86_REG_ESI, 0 }, { 0 }, 0, 0
{ X86_REG_ESI, X86_REG_EFLAGS, 0 }, { X86_REG_EAX, X86_REG_ESI, 0 }, { 0 }, 0, 0
#endif
},

{
X86_LODSQ, X86_INS_LODSQ, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_ESI, X86_REG_DS, X86_REG_EFLAGS, 0 }, { X86_REG_RAX, X86_REG_ESI, 0 }, { 0 }, 0, 0
{ X86_REG_ESI, X86_REG_EFLAGS, 0 }, { X86_REG_RAX, X86_REG_ESI, 0 }, { 0 }, 0, 0
#endif
},

{
X86_LODSW, X86_INS_LODSW, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_ESI, X86_REG_DS, X86_REG_EFLAGS, 0 }, { X86_REG_AX, X86_REG_ESI, 0 }, { 0 }, 0, 0
{ X86_REG_ESI, X86_REG_EFLAGS, 0 }, { X86_REG_AX, X86_REG_ESI, 0 }, { 0 }, 0, 0
#endif
},

Expand Down Expand Up @@ -16568,28 +16568,28 @@
{
X86_SCASB, X86_INS_SCASB, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_AL, X86_REG_EDI, X86_REG_EFLAGS, X86_REG_ES, 0 }, { X86_REG_EDI, X86_REG_EFLAGS, 0 }, { 0 }, 0, 0
{ X86_REG_AL, X86_REG_EDI, X86_REG_EFLAGS, 0 }, { X86_REG_EDI, X86_REG_EFLAGS, 0 }, { 0 }, 0, 0
#endif
},

{
X86_SCASL, X86_INS_SCASD, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_EAX, X86_REG_EDI, X86_REG_EFLAGS, X86_REG_ES, 0 }, { X86_REG_EDI, X86_REG_EFLAGS, 0 }, { 0 }, 0, 0
{ X86_REG_EAX, X86_REG_EDI, X86_REG_EFLAGS, 0 }, { X86_REG_EDI, X86_REG_EFLAGS, 0 }, { 0 }, 0, 0
#endif
},

{
X86_SCASQ, X86_INS_SCASQ, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_RAX, X86_REG_EDI, X86_REG_EFLAGS, X86_REG_ES, 0 }, { X86_REG_EDI, X86_REG_EFLAGS, 0 }, { 0 }, 0, 0
{ X86_REG_RAX, X86_REG_EDI, X86_REG_EFLAGS, 0 }, { X86_REG_EDI, X86_REG_EFLAGS, 0 }, { 0 }, 0, 0
#endif
},

{
X86_SCASW, X86_INS_SCASW, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_AX, X86_REG_EDI, X86_REG_EFLAGS, X86_REG_ES, 0 }, { X86_REG_EDI, X86_REG_EFLAGS, 0 }, { 0 }, 0, 0
{ X86_REG_AX, X86_REG_EDI, X86_REG_EFLAGS, 0 }, { X86_REG_EDI, X86_REG_EFLAGS, 0 }, { 0 }, 0, 0
#endif
},

Expand Down Expand Up @@ -17835,7 +17835,7 @@
{
X86_STOSQ, X86_INS_STOSQ, 0,
#ifndef CAPSTONE_DIET
{ X86_REG_RAX, X86_REG_RCX, X86_REG_RDI, X86_REG_EFLAGS, 0 }, { X86_REG_RCX, X86_REG_RDI, 0 }, { 0 }, 0, 0
{ X86_REG_RAX, X86_REG_RDI, X86_REG_EFLAGS, 0 }, { X86_REG_RDI, 0 }, { 0 }, 0, 0
#endif
},

Expand Down
22 changes: 11 additions & 11 deletions arch/X86/X86MappingInsnOp.inc
Original file line number Diff line number Diff line change
Expand Up @@ -2709,7 +2709,7 @@
},

{ /* X86_CMPSB, X86_INS_CMPSB: cmpsb */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

Expand Down Expand Up @@ -2744,12 +2744,12 @@
},

{ /* X86_CMPSL, X86_INS_CMPSD: cmpsd */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_IGNORE, CS_AC_IGNORE, 0 }
},

{ /* X86_CMPSQ, X86_INS_CMPSQ: cmpsq */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

Expand Down Expand Up @@ -2784,7 +2784,7 @@
},

{ /* X86_CMPSW, X86_INS_CMPSW: cmpsw */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

Expand Down Expand Up @@ -4449,7 +4449,7 @@
},

{ /* X86_INSB, X86_INS_INSB: insb */
0,
X86_EFLAGS_TEST_DF,
{ CS_AC_IGNORE, CS_AC_READ, 0 }
},

Expand All @@ -4474,12 +4474,12 @@
},

{ /* X86_INSL, X86_INS_INSD: insd */
0,
X86_EFLAGS_TEST_DF,
{ CS_AC_IGNORE, 0 }
},

{ /* X86_INSW, X86_INS_INSW: insw */
0,
X86_EFLAGS_TEST_DF,
{ CS_AC_IGNORE, CS_AC_READ, 0 }
},

Expand Down Expand Up @@ -11834,22 +11834,22 @@
},

{ /* X86_SCASB, X86_INS_SCASB: scasb */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

{ /* X86_SCASL, X86_INS_SCASD: scasd */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

{ /* X86_SCASQ, X86_INS_SCASQ: scasq */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

{ /* X86_SCASW, X86_INS_SCASW: scasw */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

Expand Down
22 changes: 11 additions & 11 deletions arch/X86/X86MappingInsnOp_reduce.inc
Original file line number Diff line number Diff line change
Expand Up @@ -2029,22 +2029,22 @@
},

{ /* X86_CMPSB, X86_INS_CMPSB: cmpsb */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

{ /* X86_CMPSL, X86_INS_CMPSD: cmpsd */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_IGNORE, CS_AC_IGNORE, 0 }
},

{ /* X86_CMPSQ, X86_INS_CMPSQ: cmpsq */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

{ /* X86_CMPSW, X86_INS_CMPSW: cmpsw */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

Expand Down Expand Up @@ -2564,17 +2564,17 @@
},

{ /* X86_INSB, X86_INS_INSB: insb */
0,
X86_EFLAGS_TEST_DF,
{ CS_AC_IGNORE, CS_AC_READ, 0 }
},

{ /* X86_INSL, X86_INS_INSD: insd */
0,
X86_EFLAGS_TEST_DF,
{ CS_AC_IGNORE, 0 }
},

{ /* X86_INSW, X86_INS_INSW: insw */
0,
X86_EFLAGS_TEST_DF,
{ CS_AC_IGNORE, CS_AC_READ, 0 }
},

Expand Down Expand Up @@ -5939,22 +5939,22 @@
},

{ /* X86_SCASB, X86_INS_SCASB: scasb */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

{ /* X86_SCASL, X86_INS_SCASD: scasd */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

{ /* X86_SCASQ, X86_INS_SCASQ: scasq */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

{ /* X86_SCASW, X86_INS_SCASW: scasw */
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF,
X86_EFLAGS_MODIFY_OF | X86_EFLAGS_MODIFY_SF | X86_EFLAGS_MODIFY_ZF | X86_EFLAGS_MODIFY_AF | X86_EFLAGS_MODIFY_PF | X86_EFLAGS_MODIFY_CF | X86_EFLAGS_TEST_DF,
{ CS_AC_READ, CS_AC_READ, 0 }
},

Expand Down
Loading
Loading