diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2008-08-03 15:35:43 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2008-08-03 15:35:43 (GMT) |
commit | 1249cf6e2c0ed87e1c593e488beedbbfe153ff00 (patch) | |
tree | 0a92b85df9dabe76b34810071e0c1def906311da /src/arch/x86/instruction.h | |
parent | f0b80c6ab55ede4f8ab8ede757f1f8951512affa (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.h | 149 |
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; |