summaryrefslogtreecommitdiff
path: root/src/arch/x86/instruction.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2008-10-26 23:37:51 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2008-10-26 23:37:51 (GMT)
commit197933fdf469ab9b8897b33c51809c128f1e3c03 (patch)
tree104d91be1a69d80eb4b59b247e4b719531bc7492 /src/arch/x86/instruction.h
parentac438e8ad47f267c9eb6f462eb5a7e2b5c017f26 (diff)
Completed support of the 0x81 and 0xc1 opcodes.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@37 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/x86/instruction.h')
-rw-r--r--src/arch/x86/instruction.h28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/arch/x86/instruction.h b/src/arch/x86/instruction.h
index baf911d..1c97255 100644
--- a/src/arch/x86/instruction.h
+++ b/src/arch/x86/instruction.h
@@ -92,11 +92,17 @@ typedef enum _X86Opcodes
X86_OP_JE_8, /* je (0x74) */
X86_OP_JNE_8, /* jne (0x75) */
- X86_OP_XOR_RM8_IMM8, /* xor (0x81 6) */
+ X86_OP_XOR_RM8_IMM8, /* xor (0x80 6) */
X86_OP_CMP_RM8_IMM8, /* cmp (0x80 7) */
- X86_OP_ADD_RM1632_IMM1632, /* add ([0x66] 0x81 0) */
+ X86_OP_ADD_RM1632_IMM1632, /* add ([0x66] 0x81 0) */
+ X86_OP_OR_RM1632_IMM1632, /* or ([0x66] 0x81 1) */
+ X86_OP_ADC_RM1632_IMM1632, /* adc ([0x66] 0x81 2) */
+ X86_OP_SBB_RM1632_IMM1632, /* sbb ([0x66] 0x81 3) */
+ X86_OP_AND_RM1632_IMM1632, /* and ([0x66] 0x81 4) */
+ X86_OP_SUB_RM1632_IMM1632, /* sub ([0x66] 0x81 5) */
X86_OP_XOR_RM1632_IMM1632, /* xor ([0x66] 0x81 6) */
+ X86_OP_CMP_RM1632_IMM1632, /* xor ([0x66] 0x81 7) */
X86_OP_ADD_RM1632_IMM8, /* add ([0x66] 0x83 0) */
X86_OP_OR_RM1632_IMM8, /* or ([0x66] 0x83 1) */
@@ -135,6 +141,13 @@ typedef enum _X86Opcodes
X86_OP_MOV_E_SI, /* mov ([0x66] 0xbe) */
X86_OP_MOV_E_DI, /* mov ([0x66] 0xbf) */
+ X86_OP_ROL_RM1632_IMM8, /* rol ([0x66 0xc1 0) */
+ X86_OP_ROR_RM1632_IMM8, /* ror ([0x66 0xc1 1) */
+ X86_OP_RCL_RM1632_IMM8, /* rcl ([0x66 0xc1 2) */
+ X86_OP_RCR_RM1632_IMM8, /* rcr ([0x66 0xc1 3) */
+ X86_OP_SHL_RM1632_IMM8, /* shl ([0x66 0xc1 4) */
+ X86_OP_SHR_RM1632_IMM8, /* shr ([0x66 0xc1 5) */
+ X86_OP_SAL_RM1632_IMM8, /* sal ([0x66 0xc1 6) */
X86_OP_SAR_RM1632_IMM8, /* sar ([0x66 0xc1 7) */
X86_OP_RET, /* ret (0xc3) */
@@ -157,6 +170,8 @@ typedef enum _X86Opcodes
X86_OP_JMP_RM1632, /* jmp ([0x66] 0xff 4) */
X86_OP_PUSH_RM1632, /* push ([0x66] 0xff 6) */
+ X86_OP_MOVZX_R1632_RM8, /* movzx ([0x66] 0x0f 0xb6) */
+
X86_OP_COUNT
} X86Opcodes;
@@ -167,11 +182,16 @@ typedef enum _X86Opcodes
/* Eventuel préfixe rencontré */
typedef enum _X86Prefix
{
- X86_PRE_NONE = 0, /* Aucun préfixe */
+ X86_PRE_NONE = (0 << 0), /* Aucun préfixe */
+
+
+ /* Groupe 3 */
+ X86_PRE_OPSIZE = (1 << 1), /* Basculement des opérandes */
- X86_PRE_OPSIZE /* Basculement des opérandes */
+ /* Autres */
+ X86_PRE_ESCAPE = (1 << 3) /* Opcode sur deux octets */
} X86Prefix;