summaryrefslogtreecommitdiff
path: root/src/arch/x86/instruction.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2008-08-03 15:35:43 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2008-08-03 15:35:43 (GMT)
commit1249cf6e2c0ed87e1c593e488beedbbfe153ff00 (patch)
tree0a92b85df9dabe76b34810071e0c1def906311da /src/arch/x86/instruction.h
parentf0b80c6ab55ede4f8ab8ede757f1f8951512affa (diff)
Read registers from the ModR/M encoding.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@13 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/x86/instruction.h')
-rw-r--r--src/arch/x86/instruction.h149
1 files changed, 57 insertions, 92 deletions
diff --git a/src/arch/x86/instruction.h b/src/arch/x86/instruction.h
index af1c5bc..9f89a9e 100644
--- a/src/arch/x86/instruction.h
+++ b/src/arch/x86/instruction.h
@@ -38,54 +38,66 @@ typedef struct _asm_x86_instr asm_x86_instr;
/* Enumération de tous les opcodes */
typedef enum _X86Opcodes
{
- X86_OP_INC_EAX, /* inc (0x40) */
- X86_OP_INC_ECX, /* inc (0x41) */
- X86_OP_INC_EDX, /* inc (0x42) */
- X86_OP_INC_EBX, /* inc (0x43) */
- X86_OP_INC_ESP, /* inc (0x44) */
- X86_OP_INC_EBP, /* inc (0x45) */
- X86_OP_INC_ESI, /* inc (0x46) */
- X86_OP_INC_EDI, /* inc (0x47) */
-
- X86_OP_DEC_EAX, /* dec (0x48) */
- X86_OP_DEC_ECX, /* dec (0x49) */
- X86_OP_DEC_EDX, /* dec (0x4a) */
- X86_OP_DEC_EBX, /* dec (0x4b) */
- X86_OP_DEC_ESP, /* dec (0x4c) */
- X86_OP_DEC_EBP, /* dec (0x4d) */
- X86_OP_DEC_ESI, /* dec (0x4e) */
- X86_OP_DEC_EDI, /* dec (0x4f) */
-
- X86_OP_PUSH_EAX, /* push (0x50) */
- X86_OP_PUSH_ECX, /* push (0x51) */
- X86_OP_PUSH_EDX, /* push (0x52) */
- X86_OP_PUSH_EBX, /* push (0x53) */
- X86_OP_PUSH_ESP, /* push (0x54) */
- X86_OP_PUSH_EBP, /* push (0x55) */
- X86_OP_PUSH_ESI, /* push (0x56) */
- X86_OP_PUSH_EDI, /* push (0x57) */
-
- X86_OP_POP_EAX, /* pop (0x58) */
- X86_OP_POP_ECX, /* pop (0x59) */
- X86_OP_POP_EDX, /* pop (0x5a) */
- X86_OP_POP_EBX, /* pop (0x5b) */
- X86_OP_POP_ESP, /* pop (0x5c) */
- X86_OP_POP_EBP, /* pop (0x5d) */
- X86_OP_POP_ESI, /* pop (0x5e) */
- X86_OP_POP_EDI, /* pop (0x5f) */
-
- X86_OP_PUSH_IMM32, /* push (0x68) */
+ X86_OP_XOR_REG1632, /* xor ([0x66] 0x31) */
+
+ X86_OP_INC_E_AX, /* inc ([0x66] 0x40) */
+ X86_OP_INC_E_CX, /* inc ([0x66] 0x41) */
+ X86_OP_INC_E_DX, /* inc ([0x66] 0x42) */
+ X86_OP_INC_E_BX, /* inc ([0x66] 0x43) */
+ X86_OP_INC_E_SP, /* inc ([0x66] 0x44) */
+ X86_OP_INC_E_BP, /* inc ([0x66] 0x45) */
+ X86_OP_INC_E_SI, /* inc ([0x66] 0x46) */
+ X86_OP_INC_E_DI, /* inc ([0x66] 0x47) */
+
+ X86_OP_DEC_E_AX, /* dec ([0x66] 0x48) */
+ X86_OP_DEC_E_CX, /* dec ([0x66] 0x49) */
+ X86_OP_DEC_E_DX, /* dec ([0x66] 0x4a) */
+ X86_OP_DEC_E_BX, /* dec ([0x66] 0x4b) */
+ X86_OP_DEC_E_SP, /* dec ([0x66] 0x4c) */
+ X86_OP_DEC_E_BP, /* dec ([0x66] 0x4d) */
+ X86_OP_DEC_E_SI, /* dec ([0x66] 0x4e) */
+ X86_OP_DEC_E_DI, /* dec ([0x66] 0x4f) */
+
+ X86_OP_PUSH_E_AX, /* push ([0x66] 0x50) */
+ X86_OP_PUSH_E_CX, /* push ([0x66] 0x51) */
+ X86_OP_PUSH_E_DX, /* push ([0x66] 0x52) */
+ X86_OP_PUSH_E_BX, /* push ([0x66] 0x53) */
+ X86_OP_PUSH_E_SP, /* push ([0x66] 0x54) */
+ X86_OP_PUSH_E_BP, /* push ([0x66] 0x55) */
+ X86_OP_PUSH_E_SI, /* push ([0x66] 0x56) */
+ X86_OP_PUSH_E_DI, /* push ([0x66] 0x57) */
+
+ X86_OP_POP_E_AX, /* pop ([0x66] 0x58) */
+ X86_OP_POP_E_CX, /* pop ([0x66] 0x59) */
+ X86_OP_POP_E_DX, /* pop ([0x66] 0x5a) */
+ X86_OP_POP_E_BX, /* pop ([0x66] 0x5b) */
+ X86_OP_POP_E_SP, /* pop ([0x66] 0x5c) */
+ X86_OP_POP_E_BP, /* pop ([0x66] 0x5d) */
+ X86_OP_POP_E_SI, /* pop ([0x66] 0x5e) */
+ X86_OP_POP_E_DI, /* pop ([0x66] 0x5f) */
+
+ X86_OP_PUSH_IMM1632, /* push ([0x66] 0x68) */
+
+ X86_OP_MOV_REG1632, /* mov ([0x66] 0x89) */
+
+ X86_OP_ADD8_REG1632, /* add ([0x66] 0x83) */
+ X86_OP_OR8_REG1632, /* or ([0x66] 0x83) */
+ X86_OP_ADC8_REG1632, /* adc ([0x66] 0x83) */
+ X86_OP_SBB8_REG1632, /* sbb ([0x66] 0x83) */
+ X86_OP_AND8_REG1632, /* and ([0x66] 0x83) */
+ X86_OP_SUB8_REG1632, /* sub ([0x66] 0x83) */
+ X86_OP_XOR8_REG1632, /* xor ([0x66] 0x83) */
X86_OP_NOP, /* nop (0x90) */
- X86_OP_MOV_AX, /* mov (0xb8) */
- X86_OP_MOV_CX, /* mov (0xb9) */
- X86_OP_MOV_DX, /* mov (0xba) */
- X86_OP_MOV_BX, /* mov (0xbb) */
- X86_OP_MOV_SP, /* mov (0xbc) */
- X86_OP_MOV_BP, /* mov (0xbd) */
- X86_OP_MOV_SI, /* mov (0xbe) */
- X86_OP_MOV_DI, /* mov (0xbf) */
+ X86_OP_MOV_E_AX, /* mov ([0x66] 0xb8) */
+ X86_OP_MOV_E_CX, /* mov ([0x66] 0xb9) */
+ X86_OP_MOV_E_DX, /* mov ([0x66] 0xba) */
+ X86_OP_MOV_E_BX, /* mov ([0x66] 0xbb) */
+ X86_OP_MOV_E_SP, /* mov ([0x66] 0xbc) */
+ X86_OP_MOV_E_BP, /* mov ([0x66] 0xbd) */
+ X86_OP_MOV_E_SI, /* mov ([0x66] 0xbe) */
+ X86_OP_MOV_E_DI, /* mov ([0x66] 0xbf) */
X86_OP_RET, /* ret (0xc3) */
X86_OP_LEAVE, /* leave (0xc9) */
@@ -96,53 +108,6 @@ typedef enum _X86Opcodes
X86_OP_HLT, /* hlt (0xf4) */
- X86_OP_INC_AX, /* inc (0x66 0x40) */
- X86_OP_INC_CX, /* inc (0x66 0x41) */
- X86_OP_INC_DX, /* inc (0x66 0x42) */
- X86_OP_INC_BX, /* inc (0x66 0x43) */
- X86_OP_INC_SP, /* inc (0x66 0x44) */
- X86_OP_INC_BP, /* inc (0x66 0x45) */
- X86_OP_INC_SI, /* inc (0x66 0x46) */
- X86_OP_INC_DI, /* inc (0x66 0x47) */
-
- X86_OP_DEC_AX, /* dec (0x66 0x48) */
- X86_OP_DEC_CX, /* dec (0x66 0x49) */
- X86_OP_DEC_DX, /* dec (0x66 0x4a) */
- X86_OP_DEC_BX, /* dec (0x66 0x4b) */
- X86_OP_DEC_SP, /* dec (0x66 0x4c) */
- X86_OP_DEC_BP, /* dec (0x66 0x4d) */
- X86_OP_DEC_SI, /* dec (0x66 0x4e) */
- X86_OP_DEC_DI, /* dec (0x66 0x4f) */
-
- X86_OP_PUSH_AX, /* push (0x66 0x50) */
- X86_OP_PUSH_CX, /* push (0x66 0x51) */
- X86_OP_PUSH_DX, /* push (0x66 0x52) */
- X86_OP_PUSH_BX, /* push (0x66 0x53) */
- X86_OP_PUSH_SP, /* push (0x66 0x54) */
- X86_OP_PUSH_BP, /* push (0x66 0x55) */
- X86_OP_PUSH_SI, /* push (0x66 0x56) */
- X86_OP_PUSH_DI, /* push (0x66 0x57) */
-
- X86_OP_POP_AX, /* pop (0x66 0x58) */
- X86_OP_POP_CX, /* pop (0x66 0x59) */
- X86_OP_POP_DX, /* pop (0x66 0x5a) */
- X86_OP_POP_BX, /* pop (0x66 0x5b) */
- X86_OP_POP_SP, /* pop (0x66 0x5c) */
- X86_OP_POP_BP, /* pop (0x66 0x5d) */
- X86_OP_POP_SI, /* pop (0x66 0x5e) */
- X86_OP_POP_DI, /* pop (0x66 0x5f) */
-
- X86_OP_PUSH_IMM16, /* push (0x66 0x68) */
-
- X86_OP_MOV_EAX, /* mov (0x66 0xb8) */
- X86_OP_MOV_ECX, /* mov (0x66 0xb9) */
- X86_OP_MOV_EDX, /* mov (0x66 0xba) */
- X86_OP_MOV_EBX, /* mov (0x66 0xbb) */
- X86_OP_MOV_ESP, /* mov (0x66 0xbc) */
- X86_OP_MOV_EBP, /* mov (0x66 0xbd) */
- X86_OP_MOV_ESI, /* mov (0x66 0xbe) */
- X86_OP_MOV_EDI, /* mov (0x66 0xbf) */
-
X86_OP_COUNT
} X86Opcodes;